파일 업로드 취약점은 악성 서버 스크립트(ex : 웹쉘)를 서버에 전달하여 해당 페이지를 통해 악성 코드가 실행되도록 하는 취약점을 말한다. 삽입할 악성 서버 스크립트 파일의 위치가 로컬서버에 위치하는지 원격지에 위치하는지에 따라 LFI(Local File Inclusion)와 RFI(Remote File Inclusion)으로 나뉜다.
점검 방법
- 사용자 게시판에 파일 첨부 기능 유무를 확인한다.
- 첨부기능이 있는경우, jsp, php, asp, cgi 등의 Server Side Script 파일이 업로드 가능한지 확인한다.
- 홈페이지에 있는 디렉터리 정보를 이용하여 Server Side Script 프로그램의 위치를 조사한 후 브라우저 주소창에서 해당 프로그램의 실행이 가능한지 확인한다.
우회 방법
- 프록시 툴을 이용하여 확장자 검사를 우회한다.
- 널바이트를 이용한다.
- SQL Injection을 이용한다.
대응 방안
- 소스코드에 include, require 등의 구문/함수가 존재하는지 검증한다.
- php 설정파일인 php.ini 파일에서 allow url fopen을 off 설정한다.
- 필터링 방식을 white-list 방식으로 하여 확장자 변경 등의 우회 기법을 차단한다.
- 파일이 업로드되는 디렉터리가 사용자에게 노출되지 않도록 조치한다.
- 첨부파일에 대한 검사는 반드시 서버측에서 구현한다.
- 저장되는 파일이나 업로드 디렉터리가 실행권한을 갖지 않도록 실행권한을 제거한다.
'Web Hacking > 이론적인 내용' 카테고리의 다른 글
SOAP란? (0) | 2017.12.05 |
---|---|
Command Injection이란? (0) | 2017.09.29 |
파일 다운로드 취약점이란? (0) | 2017.09.15 |
CSRF(Cross Site Request Forgery)란? (0) | 2017.09.08 |
XSS란? (2) | 2017.09.01 |