Lab: Web shell upload via extension blacklist bypass
블랙리스트 우회 File upload Attack
/home/carlos/secret 내용을 추출하면 문제해결
[기본 설정] 프록시 설정, ACCESS THE LAB의 주소를 Burp Suite에 설정
(1) 블로그에서 My account로 이동하여 로그인을 합니다.
ID와 PW는 wiener / peter 입니다.
(2) 프로필에 exploit.php를 업로드 합니다.
php 파일 내용은 이전 포스트 (4)-1 참고
[보안 취약점 진단 및 대응/port swigger:Lab 풀이] - Lab: Remote code execution via web shell upload
이번에는 exploit.php 파일이 업로드 되지 않습니다.
=> 확장자가 php가 아닌 다른 확장자로 업로드해야함
(3) exploit.jin1216을 업로드 합니다.
exploit.php 파일의 확장자만 바꾸면 됩니다. 확장자명은 임의의 값을 입력합니다.
(4) 업로드 패킷을 확인합니다.
=> 업로드 파일이 코드로 실행되는 것이 아닌 단순히 문자열로만 출력이 되고 있음
=> 존재하지 않는 확장자(jin1216)을 넣었을 때 일단 작동을 한다는 것은 블랙리스트로 확장자 검증을 하고 있음을 알 수 있음
(4) .htaccess를 업로드 합니다.
패킷을 통해 아파치 서버를 사용한다는 것을 확인했으며, 아파치에는 .htacces라는 것이 있습니다.
.htaccess파일에서 htaccess는 hypertext access의 약자로 .은 숨김파일을 뜻합니다. 서버 디렉토리 하위의 설정을 컨트롤 할 수 있는 설정파일입니다. 일반적으로 아파치에서는 이 파일을 허용하고 있지는 않습니다.
사용법 : https://httpd.apache.org/docs/2.4/ko/howto/htaccess.html
(4)-1 .htaccess 파일을 생성합니다.
[.htaccess]
AddType application/x-httpd-php . jin1216
=> php의 실행 타입임을 의미하고 .뒤의 값은 (3)에서 설정한 확장자를 넣어주면 됩니다.
(4)-2 .htaccess 파일을 업로드 합니다.
(5) 패킷을 확인합니다.
.htaccess 파일 업로드 패킷을 보면 403 Forbidden이 출력되지만 정상적으로 업로드 된 것입니다.
(6) 이전에 (3)에서 업로드 했던 파일을 다시 업로드 합니다.
(7) 패킷을 확인하고 파일 내용을 추출합니다.
exploit.jin1216 파일 업로드 패킷을 보면 파일 내용을 볼 수 있습니다.
(8) 문제해결
블로그 상단 Submit solution 버튼을 클릭하고 (7)번에서 추출한 파일 내용을 붙여넣습니다.