본문 바로가기
Security/Web

File Download 취약점

by 비니화이팅 2018. 7. 22.

File Download 취약점

이번에는 파일 다운로드 취약점에 대해서 살펴보도록 하겠습니다.

말 그대로 허용된 파일 외의 파일이 다운로드가 가능한 취약점입니다. 웹 애플리케이션에서 파일명을 필터링하지 못했을 경우 발생합니다.


파일 다운로드 취약점 패턴은 다음과 같습니다.

1. 다운로드 가능한 파일이 올려져 있다.

2. 해당 파일-우클릭-속성-주소에 상대경로와 패스명이 나온다. (이를 이용하여 파일 다운을 받을 수 있습니다.)

 

아래는 예시입니다.

보통 ../을 7개~10개정도 입력하면 대부분 커버가 가능합니다.

(http://server/link.php?file=../../../../../../../../etc/passwd)

(http://server/link.php?file=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd) -> URL인코딩

(http://server/link.php?file=Li4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3Bhc3N3ZA==) -> BASE64인코딩


Tip이 있습니다.

윈도우는 대소문자를 구분하지 않지만, 리눅스는 대소문자를 구분합니다.
이것을 구분하여 이 서버가 윈도우 기반인지 리눅스 기반인지 알 수 있습니다.

대문자로 바꿔도 그대로 다운이 받아진다면 윈도우라고 쉽게 알 수 있습니다.

또한, jsp나 php이면 리눅스일 가능성이 높습니다.


실습해보도록 하겠습니다.

직접 구글에서 파일 다운로드 사이트를 검색하여 취약점을 찾아봅시다.
① 파일 다운로드 사이트 검색


② 파일 다운로드 여부 확인

검색된 사이트에서 직접 파일 다운로드가 가능한지 살펴봅니다.


③ 다운로드 경로를 복원

검색된 결과의 패턴은 아래와 같습니다. 보안상 캡처하지는 않았습니다.

홈페이지 명에서 우클릭-속성을 클릭하여 url을 복사합니다.

홈페이지 명

URL

설명 


이것을 디코딩합니다. 보안상 가렸습니다.


필요없는 부분은 지워 다운로드 경로를 복원합니다. 마찬가지로 보안상 가렸습니다.

이미 알고 있는 사이트라면 구글링을 하지 않고 직접 해당 사이트에 들어가 다운로드 파일 우클릭-속성으로 알아내어 동일한 방법으로 진행하시면 됩니다.

④ 파일 다운로드 취약점 점검

 실제로 다운로드가 되는지 확인해봅니다.

http://~~~~~/~~~/download.php?path=../../../../../../../../../../etc/passwd


 

대응책

아래의 코드처럼 특수문자 필터링을 합니다.

1
2
3
4
5
6
if(strstr($filename,"../")||strstr($filename,"..\\"))
{
echo "<script>alert('Access Denied!!')</script>";
echo "<script>location.href('/index.html')</script>";
exit();
}
cs


직접 적용해보니 필터링이 잘 되는 것을 확인할 수 있습니다.

 

 

'Security > Web' 카테고리의 다른 글

불필요 정보노출 취약점  (0) 2018.07.28
File Upload 취약점  (1) 2018.07.22
File Download 취약점  (0) 2018.07.22
SQL Injection  (2) 2018.07.21
CSRF(Cross Site Request Forgery)  (0) 2018.07.21
XSS(Cross Site Script)  (0) 2018.07.15

댓글0