Hacking/Web.

웹쉘 업로드 확장자 우회

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