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로 바꾸어서 사용
-> 웹 서버가 파일 검사를 진행할 때, 파일 자체는 이미지 파일 구조랑 똑같이 보일 수 있다.
이미지 파일을 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 |