hackthissite/basic/8번 풀이
문재 내용을 요약하자면 Sam이 달력 프로그램을 망쳤으나 이번에는 Sam은 암호화되지 않은 암호 파일을 /var/www/hackthissite.org/html/missions/basic/8/에 저장했습니다. 그런데 Sam의 어린 딸 Stephanie는 방금 PHP 프로그래밍을 배웠습니다. 최근 파일 저장에 대해 배웠고 자신의 능력을 보여주기 위해 스크립트를 작성했습니다.
아마 딸이 만든 저 Enter your name:에 취약점을 찾아야 할 것 같습니다.
Enter your name에 뚱이라고 입력하고 submit을 누르자
파일이 저장되었습니다. 파일을 보려면 여기 를 클릭 하십시오 . 라는 문구가 나오고
내 이름의 글자 수를 알려준다.
그녀가 PHP를 배웠고 SCRIPT를 작성 했다고 하니 php와 script가 관련된 취약점인 SSI(Server-Side Include)
공격을 사용해 보아야겠다.
https://owasp.org/www-community/attacks/Server-Side_Includes_(SSI)_Injection
Server-Side Includes (SSI) Injection | OWASP Foundation
Server-Side Includes (SSI) Injection on the main website for The OWASP Foundation. OWASP is a nonprofit foundation that works to improve the security of software.
owasp.org
SSI의 정보는 다음 사이트를 참조하고
위에 사이트에 나와있는 공격
<!--#exec cmd="ls" --> : 디랙토리 파일 나열 이공격을 통해서 패스워드가 저장되어있는 파일의 위치를 알아야 한다.
<!--#exec cmd="ls" -->을 넣고 다시 submit을 눌러보았다.
그런데 이상하다... 뭔가 이상한. shtml 파일들이 나열되어 있다....
뭔가 이상해 문제가 무엇인지 알아보다 결국 발견한 것이 있다.
바로 /missions/basic/8/tmp
8까지 있어야 하는데 tmp까지 내려와서 디랙토리 파일을 나열하여 tmp내의 파일들을 나열했던 것이다.
이 문제를 해결하기 위해서는 <!--#exec cmd="ls ../"--> 이렇게 ../를 추가하여 상위 디랙토리로 올라가야 한다.
다시 <!--#exec cmd="ls ../"-->를 입력한 결과...
au12ha39vc.php 라는 누가봐도 패스워드를 숨겼을 것 같은 파일이 나오게 된다.
이제 여기에 들어가면 패스워드가 나올 것이다.
패스워드가 나와버렸다!
PHP와 SSI의 개념에 대해 알 수 있던 좋은 문제였다...