웹쉘 업로드 확장자 우회
2017. 11. 8. 20:45
최근에 웹쉘 업로드 관련해서 취약점을 2개를 찾아서 내가 찾았던 취약점을 공유하려고 한다.
보통 이미지 업로드 부분에서 웹쉘 업로드 취약점이 발생하는데, 보통 많은 사이트들이 웹쉘업로드를 막아두고 있다. 그런데 대부분의 사이트에서 이 웹쉘 업로드하는 시스템을 조금 잘 못 프로그래밍해서 우회가 굉장히 쉬운 경우들이 있다.
<?php $filename = $argv[1]; $filename = explode(".", $filename); if ($filename[1] === "jpg" || $filename[1] === "png") { echo "Image upload success. \n"; } else { echo "No hack ~_~ \n"; } ?>
이런 경우이다.
실행해보도록하겠다. $argv 값으로 업로드할 파일이름을 넘겨주면 된다.
ch4n3@c2w2m2_ch4n3_zzang ~/tmp $ ./webshellupload.php hack.jpg
Image upload success.
ch4n3@c2w2m2_ch4n3_zzang ~/tmp $ ./webshellupload.php hack.png
Image upload success.
예상한대로 $argv[1]로 넘겨준 파일이름은 정상적으로 업로드될 수 있는 파일이라고 식별했다.
ch4n3@c2w2m2_ch4n3_zzang ~/tmp $ ./webshellupload.php "hack.php";
No hack ~_~
ch4n3@c2w2m2_ch4n3_zzang ~/tmp $ ./webshellupload.php "hack.aspx";
No hack ~_~
그리고 확장자가 jpg, png가 아닌 파일은 업로드할 수 없다고 뜬다. 하지만, 이것은 존나 쉽게 우회 가능하다. 거의 모든 프로그래머들이 $filename[1] 로 확장자를 검색한다.
띠용?
ch4n3@c2w2m2_ch4n3_zzang ~/tmp $ ./webshellupload.php "bypass.jpg.php"
Image upload success.
ch4n3@c2w2m2_ch4n3_zzang ~/tmp $ ./webshellupload.php "bypass.jpg.aspx"
Image upload success.
넘모넘모 쉽게 우회가 된 것을 볼 수 있다. 이렇게 해서 웹쉘을 업로드하고 실행하면 서버는 내 것이다ㅋㅋㅋ
이렇게 해서 뚞딲!
그 외.
그리고 몇몇 사이트 중에 확장자를 JS로 검사하는 경우가 있다. 이런 경우, 해당 사이트에는 취약점이 적어도 100개 정도는 나올 수 있으며 그리고 웹쉘 또한 업로드할 수 있다ㅋㅋㅋ
'Hacking > Web.' 카테고리의 다른 글
'1=1'-- - 가 참이 되는 이유 (0) | 2018.01.04 |
---|---|
워게임 문제 아이디어 (0) | 2017.12.09 |
CTF SSRF시 확인사항 (0) | 2017.11.06 |
SQL Injection Tricks (0) | 2017.11.04 |
webhacking.kr 41번 write up (0) | 2017.11.03 |