나만의 연습장

파일 업로드 (File Upload) 취약점 본문

웹 해킹/File Upload

파일 업로드 (File Upload) 취약점

My-Berr 2019. 5. 11. 18:17

!!!경고!!!

본 게시물에는 해킹 기법에 관련한 정보가 포함되어 있습니다.

이를 사용하여 악용할 시에는 법적 문제가 발생할 수 있으며

공격으로 인한 사고에 대해서 작성자는 절대 책임지지 않습니다.

 

이 페이지를 열함하였다는 것은 이에 동의한  것으로 간주합니다.

1. 파일 업로드 (File Upload) 취약점 이란?

파일 업로드(File Upload) 취약점은 파일 첨부를  할 수 있는 게시판에 일반적으로 허용된 파일 (이미지 파일, 워드 파일  등) 이외의 악의적인 스크립트가 포함된 소스파일(.jsp, .php, asp 등 ..)을 첨부할 수 있게되면, 공격자는 악성 스크립트 등재 후 서버 상에서 스크립트를 실행시켜 쉘 획득, 서버 변조 등 웹 서버를 장악할 수 있다.

 

2. 파일 업로드 (File Upload) 취약점이 발생하는 원인?

게시판 등 업로드 파일에 대한 규제가 없을 경우 발생하며, 이를 악용한 해커에 의해서 악성 스크립트 코드가 수행 될 수 있으며, jsp, php, asp 등의 확장자를 가진 스크립트 파일을 업로드 한 후 게시판에서 원격으로 서버의 시스템 명령어를 제어 (Web Shell)가 가능하다.

 

3. 파일 업로드(File Upload) 공격 및 취약점 진단 방법

[ 파일 업로드(File Upload) 취약점을 이용한 공격 ]

1) 공격자는 자료실과 같은 사용자가 파일 업로드가 가능한 웹 애플리케이션에 접근한다.

2) Web Shell 업로드를 통해서 서버 권한을 탈취한다.

3) 서버 권한 탈취 후, 내부망에 접근하여 정보 유출 및 수집을 한다.

 

파일 업로드(File Upload) 취약점 테스트 ]

1) 파일 업로드 애플리케이션 사용 유무 확인

2) .asp .aspx .jsp .php 와 같은 확장자로 파일 업로드가 가능한자  확인한다. (.htaccess 포함)

3) 클라이언트 검증 인지 서버 검증인지 필히 확인

 

웹쉘 (Web Shell) 실행 가능 확장자 우회 ]

1) ASP -> .cer .cdx .asp

2) PHP -> .php3 .html . htm

3) JSP -> .war

 

4. 파일 업로드(File Upload) 실습

1) NC.exe [Netcat] File Upload

Netcat 특성상 공격자와 공격 대상 모두 nc.exe를 시스템에 소유하고 있어야 된다.

즉, 공격 대상 웹 서버(Web Server)에 nc.exe를 업로드 해야 된다.

 

2) Web Shell을 사용하여 업로드한 nc.exe (Netcat)의 경로를 확인

dir 명령어 : 디렉토리에 있는 파일과 하위 디렉토리 목록을 보여주는 명령어

/s : 지정한 디렉토리와 하위 디렉토리를 포함하여 보여준다.

/w : 이름만 가로로 배열하여 보여준다.

 

3) 파일 업로드(File Upload) 결과

Reverse Telnet을 통새서 웹 서버(Web Server)의 Shell을 획득 하였다.

 

5. 파일 업로드(File Upload) 필터링 우회

1) 필터링 [관리자]

게시판에 파일 업로드를 할 때 이미지 파일만 업로드 되도록 설정 한다.

이미지 파일이 아닐 경우 "No Image File"이라고 화면에 출력해준다.

 

2) 필터링 활성화 여부 확인 [공격자]

관리자의 설정에 의해서 Image File이 아닐 경우, 파일 업로드가 되지 않고 "No Image File" 이라는 문구가 출력 되었다.

 

3) 파일 업로드 결과

위와 같이 프록시 서버(Proxy Server)를 이용하여 Request Message를 캡쳐하여 Content-Type을 text/plain -> image로 수정하면 손 쉽게 필터링을 우회할 수 있었다.

 

6. 파일 업로드(File Upload) 실습 [.htaccess]

[ .htaccess ]

.htaccess(분산 설정파일)을 사용하면 디렉토리 별로 설정을 변경할 수 있다.

디렉토리 내의 파일이 실행될 때는 모두 .htaccess를 거치게 되는데, 여러 설정 지시어가 있는 파일을 특정 문서 디렉토리에 두면 그 디렉토리와 모든 하위 디렉토리에 지시어를 적용할 수 있다. .htaccess(분산 설정 파일)을 거치면 디렉토리 잠금, 확장자  추가, 핫 링크 기능 추가 등 여러가지 기능 사용하여, 디렉토리별 관리가 가능해진다. 파일 경로 별로 서버 설정을 다르게 하고 싶을 경우 사용한다.

apach 설정 중, AddType 지시자를 이용하여 확장자에 대한 mime-type을 조절 할 수 있다는 것을 이용한 공격이다. 즉, .htaccess를 통해서  해당 디렉토리 뿐만 아니라, 다른 디렉토리의 mime-type 역시 마음대로 조절할 수 있게 된다.

 

이러한 취약점을 이용하여 .txt .jpeg 등의 일반 확장자도 php코드로 실행 될 수 있도록 한다면, 웹 쉘 확장자를 .txt 및 .jpeg로 바꾸어서 업로드 하고 해당 파일에 접근하면 php 코드로 실행 되도록 할 수 있다.

'웹 해킹 > File Upload' 카테고리의 다른 글

파일업로드 확장자 우회(JSP)  (0) 2019.05.12
Comments