WebShell 이란
파일 업로드를 통해 공격자가 임의 파일을 업로드하면 서버를 장악할 수 있습니다.
파일을 업로드할 수 있는 곳에서 취약점이 발생할 수 있습니다.
파일 업로드로 할 수 있는 것
1. 서버를 장악하는 공격이기 때문에 뭐든지 할 수 있습니다.
2. 피싱 페이지를 해당 도메인에 만들 수 있습니다.
3. 메인 페이지를 바꾸어 버릴 수 있습니다.
4. 크로스 사이트 스크립팅 Stored XSS 을 쉽게 삽입할 수 있습니다.
5. Dos 공격할 수 있습니다.
Web Shell 코드
<?php
echo system($_GET['cmd']);
?>
http://example.com/webshell.php?cmd= 이런 식으로 명령을 실행할 수 있습니다.
php 기반 서버인 경우이고 해당 서버 언어에 맞게 파일 이름과 코드를 변경해서 사용할 수 있습니다.
Web Shell 우회 방법
1. MIME 검사하는 경우 Content-Type 을 바꿔서 요청을 보내볼 수 있습니다.
2. 업로드는 되는데 해당 디렉터리에 실행 권한이 없는 경우 filename=”..%2fwebshell.php” 이렇게 다른 디렉터리로 업로드할 수 있습니다.
3. php 확장자 검사하는 경우 대소문자 구분하거나 (phP, Php, PhP) 다른 확장자 사용합니다. (phtml, php3, php4, php5)
4. jsp의 경우 (jspx, jsw) 가장 많이 사용한다고 합니다.
5. 파일 시그니처 활용 : 이미지 파일을 열고 hex 값 마지막이나 중간에 웹쉘 코드를 삽입 후 php 파일로 확장자를 변경해 우회할 수도 있습니다.
Web Shell 우회 안되는 방법
1. webshell.png 이런 거는 서버에서 실행할 수 없기 때문에 안됩니다.
2. webshell.php.png 이런 거도 안됩니다.