출처: 게임해킹 - 한주성
1. 소스코드 상에서 확장자 검증
다음과 같이 jpg,png,gif,jpeg 인 경우만 업로드 할 수 있도록 설정
if(eregi(“jpg|png|gif|jpeg”, $notuploadfile)){
move_uploaded_file($_FILES[‘userfile’][‘tmp_name’], $uploadfile);
echo “성공적으로 업로드 되었습니다.”;
exit;
}
2. httpd. conf 설정
다음과 같이 설정하면 C:/APM_Setup/htdocs/upload 경로에 있는 jpg|png|gif|jpeg 확장자들만 실행 시켜주는 권한을 줌
<Directory "C:/APM_Setup/htdocs/upload">
<FilesMatch "\.(jpg|png|gif|jpeg">
Order allow,deny
Allow from all
</FileMatch>
</Directory>
1,2 번을 하더라도 웹쉘의 확장자를 webshell.php.jpg로 바꾸게 되면 우회가 가능해진다. 이를 방어하기 위해서는 다음과 같이 수정해주어야 한다.
<Directory "C:/APM_Setup/htdocs/upload">
<FilesMatch "\.(jpg|png|gif|jpeg">
Order allow,deny
Allow from all
</FileMatch>
<FilesMatch "\.([^.]+)\.([^.]+)$"> // webshell.php.jpg 와 같이 .이 두개 이상인지를 확인하고 2개 이상일 경우 deny
Order Deny, Allow
Deny from all
</FileMatch>
</Directory>
3. php.ini 설정
disable_functions = exec, system, popen, proc_open, get_user, php_uname, ini_set, phpversion, ini_get, ini_get_all, phpinfo, passthru, escapeshellcmd, pcntl_exec, shell_exec, show_source
위와 같이 추가를 해준다. 위에 대한 설명은 웹셀에서 자주 쓰이는 함수를 사용 못하게 해주는 기능이다.
4. 서버내 웹쉘 검색
다음과 같이 입력해주면 된다.
findstr /i /s exe /d:webshell.txt
/i 옵션은 대소문자 무시
/s 옵션은 하위 디렉토리 검색
/d:webshell.txt 에는 3번 php.ini 설정에서 설명한 함수가 들어있다.
ex) webshell.txt 메모장 안에 exec( , system ( 이런식으로 저장하고 finstr을 이용하여 돌려주면 된다.
'프로젝트 관련 조사 > 모의 해킹' 카테고리의 다른 글
DDOS 공격대응 메뉴얼 (0) | 2016.04.26 |
---|---|
DDOS 공격 예방하기 (0) | 2015.10.18 |
해킹 사고 체크리스트 (0) | 2015.10.12 |
ip스캔 - Angry IP Scanner (0) | 2015.10.07 |
metasploit(메타스폴로이트) 공격전 확인 사항 (0) | 2015.09.30 |