본문 바로가기
WEB HACKING/웹 해킹[이론]

File Download 공격

by madevth 2021. 12. 21.
반응형

① 파일 다운로드 취약점이란?

File Download 취약점은 파일 다운로드 시 사용자로부터 특정 파일 정보를 입력받지만 이 입력값을 검증하지 않을 경우에 발생할 수 있는 취약점이다.

fileOpen('/upload/' + $_GET['fileName']);

위와 같이 경로와 이름을 통해 특정 파일에 접근해서 다운로드를 하는데, 이 값들을 조작한다면 임의의 파일을 다운로드할 수 있게 된다.

파일 다운로드 취약점은 파일 업로드 취약점과 공격 방식도, 대응 방안도 비슷하다.

 

우선 공격 대상 서버에 있는 파일을 불러오는 LFI와 비교를 해보자.

LFI는 파일 경로를 조작하여 해당 서버에 있는 파일을 확인하는 공격이었는데, /etc/passwd 같은 파일이 아닌 php 코드는 include가 파일을 실행해버리기 때문에 소스코드를 확인하는 것이 어려웠다. 하지만 파일 다운로드는 LFI처럼 파일을 실행하는 것이 아니라 말 그대로 "파일을 다운로드"받는 것이므로 소스코드도 확인할 수 있다. 따라서 해당 소스코드를 확인해서 취약점을 찾을 수도, DB 계정 정보를 탈취할 수도 있다. 일반적으로 파일 다운로드에 대한 POC(Proof of Concept)로 리눅스라면 /etc/passwd 파일을, 윈도우라면 hosts 파일을 확인한다.

 

 

② 파일 다운로드 취약점 대응 방안

파일 다운로드 공격에 대응하기 위해서는 파일 업로드 공격과 마찬가지로 DB로 파일을 관리해야한다.

하지만 파일이름을 ../../../etc/passwd와 같이 저장한다면, 파일을 저장할 때는 문제가 없지만 실행할 때(다운로드할 때) /etc/passwd 파일을 가져올 수도 있다. 이 경우에는 ../를 필터링해주거나 저장할 때 realpath 같은 디렉토리를 정리해주는 함수를 거쳐서 저장하면 directory traversal에 대응할 수 있다.

DB 자체에 파일을 저장하는 것도 서버의 다른 파일을 건드릴 수 없게 하므로 하나의 방법이 될 수 있다.

반응형

'WEB HACKING > 웹 해킹[이론]' 카테고리의 다른 글

인증, 인가 취약점  (0) 2021.12.26
File Upload 공격(3)  (0) 2021.12.18
File Upload 공격(2)  (0) 2021.12.12
File Upload 공격  (0) 2021.12.11
CSRF : Cross-Site Request Forgery  (0) 2021.11.26

댓글