파일 다운로드 취약점이란 인터넷에서 어떠한 파일을 받는 과정에서 발생하는 취약점으로 방문자에게 허용된 파일 외의 다운로드를 가능하게 함으로써 웹 서버의 소스 및 페스워드 등을 다운받을 수 있다.




1.URL파라미터 변조


 게시판에 첨부된 파일을 사용자에게 제공하는 방식에는 정적과 동적 방식이 있으며, 아래와 같은 정적방식은 디렉터리에 파일 링크를 걸어 사용자에게 제공하기 때문에 파라미터 변조 가능성이 없는 안전한 구조이다.


http://xxx.xxx.xxx/xxx/downfile.txt


그러나 동적방식의 경우, 파리미터 값 조작(file = ../../../../../../../../../etc/passwd)등의 취약점으로 인해 시스템 파일 등의 접근시도가 가능하다.


http://xxx.xxx.xxx/xxx?file=downfile.txt




2.NULL바이트 인젝션


c/c++에서 널바이트 문자열(%00, 0x00)은 문자열의 끝을 의미하기 때문에, 특정  확장자를 숨기기 위한 목적으로 사용될 수 있으며, 해당 부분의 취약점은 C루틴을 처리하거나 내부의 C API를 호출하는 함수를 사용하는 경우에 발생될 수 있다.



 1) Perl


C로 개발된 펄의 경우, FILE()함수에 입력된 값은 마지막처리단계에서 C 프로세스로 전달되기 때문에 %00과 같은 널 문자를 이용한 공격이 가능할 것이다.



위의 코드는 외부에서 입력된 값에 .jpg를 붙여 처리하도록 구성되어 있기 때문에 다운로드를 원하는 파일의 확장자가 jpg로 끝나야 한다.

그러나 널바이트와 .jpg를 삽입하는 경우 위 로직을 우회할 수 있다.


정상적인 URL


우회된 URL



  2)JAVA


자바의 경우는 java.io.File 함수가 파라미터를 C API로 전달하기 때문에 NULL바이트 인젝션이 가능하다.



정상적인 URL


우회된 URL




3. 멀티 파라미터 변조


 웹 사이트의 구조를 보면 file 과 file_path라는 파라미터가 존재하며, 각각에는 파일 이름과 디렉토리가 입력되는 구조를 보인다.

 이러한 경우에는 2개의 파라미터를 적절하게 변조하여 접근해야 한다.


정상적인 URL


의심스러운 파라미터가 2개이기 때문에 file 혹은 file_path만 변조하거나, 둘 모두를 동시에 변조하여 접근해볼 수 있다.


file 파라미터 변조


file_path 파라미터 변조


file, file_path 파라미터 모두 변조




4. 웹 로그를 통한 관리자 권한 획득


 파일 다운로드 취약점이 있다는 것을 확인한 후, 웹 로그 접근을 이용하여 관리자정보를 얻는 과정이다.

 파일 다운로드 취약점이 있다면, 다양한 시스템파일(passwd, .cshrc, .bashrc, .profile, .bash_profile 등)의 접근을 통하여 웹 로그파일의 위치를 추측하여 접근을 할 수 있다.



관리자 페이지에 입력되는 계정과 암호를 GET 메소드를 통해 전송하는 경우, 입력된 모든 정보는 웹 로그에 고스란히 남게 된다.  

또한 웹 로그의 접속한 모든 디렉토리 및 페이지 정보도 확인할 수 있으므로 디렉토리 전체를 보는 것과 동일 한 공격효과를 볼 수 있다.


by dajababa



'WEB > Web Hacking' 카테고리의 다른 글

Drive-By-Download(DBD)공격(실습편)  (0) 2017.05.29
Blind SQL Injection (이론편)  (0) 2017.05.14
CSRF (Cross-site request forgery) 란  (0) 2017.04.28
Drive-By-Download(DBD) 공격(이론편)  (0) 2017.04.24
파일업로드 취약점  (0) 2017.04.09

+ Recent posts