Lab: Web shell upload via extension blacklist bypass

Lab: Web shell upload via extension blacklist bypass

https://portswigger.net/web-security/file-upload/lab-file-upload-web-shell-upload-via-extension-blacklist-bypass

 

Lab: Web shell upload via extension blacklist bypass | Web Security Academy

This lab contains a vulnerable image upload function. Certain file extensions are blacklisted, but this defense can be bypassed due to a fundamental flaw in ...

portswigger.net

 

블랙리스트 우회 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

 

Lab: Remote code execution via web shell upload

Lab: Remote code execution via web shell upload https://portswigger.net/web-security/file-upload/lab-file-upload-remote-code-execution-via-web-shell-upload Lab: Remote code execution via web shell upload | Web Security Academy This lab contains a vulnerabl

psjin230.tistory.com

 

exploit.php 업로드
업로드 실패

이번에는 exploit.php 파일이 업로드 되지 않습니다. 

=> 확장자가 php가 아닌 다른 확장자로 업로드해야함

 

(3) exploit.jin1216을 업로드 합니다.

exploit.php 파일의 확장자만 바꾸면 됩니다. 확장자명은 임의의 값을 입력합니다.

확장자 변경
exploit.jin1216 파일 업로드
업로드 성공

 

(4) 업로드 패킷을 확인합니다.

=> 업로드 파일이 코드로 실행되는 것이 아닌 단순히 문자열로만 출력이 되고 있음

=> 존재하지 않는 확장자(jin1216)을 넣었을 때 일단 작동을 한다는 것은 블랙리스트로 확장자 검증을 하고 있음을 알 수 있음

 

(4) .htaccess를 업로드 합니다.

패킷을 통해 아파치 서버를 사용한다는 것을 확인했으며, 아파치에는 .htacces라는 것이 있습니다.

.htaccess파일에서 htaccess는 hypertext access의 약자로 .은 숨김파일을 뜻합니다. 서버 디렉토리 하위의 설정을 컨트롤 할 수 있는 설정파일입니다. 일반적으로 아파치에서는 이 파일을 허용하고 있지는 않습니다. 

사용법 : https://httpd.apache.org/docs/2.4/ko/howto/htaccess.html

 

아파치 투토리얼: .htaccess 파일 - Apache HTTP Server Version 2.4

아파치 투토리얼: .htaccess 파일 이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요. .htaccess 파일을 사용하여 디렉토리별로 설정을 변경할 수 있다. .htaccess 파일(

httpd.apache.org

 

(4)-1 .htaccess 파일을 생성합니다.

[.htaccess]

AddType application/x-httpd-php . jin1216

=> php의 실행 타입임을 의미하고 .뒤의 값은 (3)에서 설정한 확장자를 넣어주면 됩니다.

 

(4)-2 .htaccess 파일을 업로드 합니다.

.htaccess 파일 업로드
업로드 성공

 

(5) 패킷을 확인합니다.

.htaccess 파일 업로드 패킷을 보면 403 Forbidden이 출력되지만 정상적으로 업로드 된 것입니다.

 

(6) 이전에 (3)에서 업로드 했던 파일을 다시 업로드 합니다.

exploit.jin1216 파일 업로드

 

(7) 패킷을 확인하고 파일 내용을 추출합니다.

exploit.jin1216 파일 업로드 패킷을 보면 파일 내용을 볼 수 있습니다.

 

(8) 문제해결

블로그 상단 Submit solution 버튼을 클릭하고 (7)번에서 추출한 파일 내용을 붙여넣습니다.