kjh00n의 기록저장소

File Download 취약점 본문

어플리케이션 보안 운영

File Download 취약점

kjh00n 2025. 1. 10. 16:25

File Download 취약점

● 웹 서버의 파일을 강제로 Download하는 취약점

● Directory Traversal에 의해 다른 위치에 있는 파일도 다운로드 가능

● 적절하게 처리하지 못한 파일 확장자로 인해 발생하는 취약점 → 미등록 확장자

● 부적절한 환경 설정에 의해 소스 코드 파일 또는 백업 파일 등이 다운로드 가능

● 텍스트 형태나 파일 다운로드 형태로 반환됨

 

피해 범위

● 시스템의 중요 파일이 외부로 노출됨

  • 소스코드, 중요 시스템 파일 및 설정 파일

 

보안

● Directory Traversal에 해당하는 "../" 문자열을 적절하게 필터링

● 다운로드 할 수 있는 디렉토리 및 확장자 제한

● 업로드된 파일만 다운로드 할 수 있게 적절히 필터링


File Download 취약점 실습

/var/www/html/board/upload/test11.txt를 요청

웹페이지에서 파일을 다운로드하면 전송되는 패킷의 형식 ↑


프록시 설정
Trap Request를 체크하고 웹페이지에서 파일을 다운로드하면 날아오는 Request 요청이다

test11.txt 파일이 저장되어있는 경로는 /var/www/html/board/upload에 저장되어있다.

다운로드되는 파일의 이름을 ../board_view.php로 변경

../는 /var/www/html/board 라는 위치를 의미한다.

../은 상위 디렉토리로 이동하고 상위 디렉토리에 있는 board_view.php 파일을 다운로드 하겠다

다운로드된 board_view.php 파일을 메모장으로 확인해보았음
이번에는 ../../dbconn.php 파일을 다운로드 하겠음

../을 하면 /var/www/html/board이고 ../을 한번더 하면 /var/www/html이다.

다운로드된 ../../dbconn.php 파일이다.


File Download 취약점 보안 실습

방법①

../가 있으면 공백으로 치환하겠다는 코드를 설정
../../index.php를 다운로드 하겠다.
다운로드된 index.php 파일을 확인해보면 아무런 정보도 담겨있지 않다


방법②

Paros에서 다운로드하려는 파일의 이름을 변경하여 다운로드하는 것을 방지
이름을 test1111111.txt로 바꾸고 다운로드
방지하는 코드를 설정했기 때문에 실행되는 경고창