File Upload 공격
정의
공격자가 서버에 원하는 임의의 파일을 업로드하여 할 수 있는 공격
발생 원인
파일을 업로드 받을 때, 검증 및 검사를 안 하기 때문
예시)
프로필 사진 : 이미지 파일만 업로드 되어야 하는데, 아무 파일이나 업로드 되는 상황
발생 위치
파일을 업로드 할 수 있는 곳
예시) 게시판, 프로필 사진, 서류 제출하는 곳, 은행 앱(신분증 사진) 등등..
공격 시나리오
1. 서버 측 실행 파일 (웹쉘 공격) : 파일 업로드 공격은 주로 웹쉘 공격을 의미한다.
2. Phising : HTML 파일
3. Deface 공격
4. XSS
5. DoS
1. 서버 측 실행 파일 (웹쉘 공격)
인터넷 상에서 서버에 명령을 내릴 수 있다.
php web shell (쉘 획득)
<?php
echo system($_GET['cmd']);
?>
cmd를 파라미터로 하여 명령어를 입력할 수 있는 코드
권한 상승을 위해 권한 상승 취약점이 있는 코드를 업로드하여 웹쉘에서 실행 가능하다.
웹쉘 공격의 핵심
1. 웹 서버 측 실행 코드를 업로드할 수 있어야 한다.
2. 업로드 된 파일의 경로를 알아야 한다.
예시) img 태그의 src 확인 (올라간 파일 우클릭 - 이미지 주소 복사)
업로드한 파일의 경로를 알아내는 이유
1. 알아야 요청을 하고 (링크로 접속)
2. 요청을 해야 실행할 수 있으니까
파일 업로드 대응 방안 및 방안별 우회 방법 (약한 버전)
1. 업로드 되는 파일을 검사하기 (제한하기)
MIME
header에 Content-Type : text/php 로 되어있는 정보를 보고 검사하는 케이스
ex) content-Type: text/php -> content-Type: image/png
우회 : burp proxy에서 바꿔쓸 수 있다.
2. 해당 업로드 디렉토리에서 실행을 못하게 하기
/files/avatars/~~~.php
여기에 있는 파일들은 실행권한을 제거함.
우회 : 파일 저장 경로 변조
파일을 업로드할 때, burp proxy에서 ../ 을 앞에 추가한다.
위 예시에선 avatars 에서는 실행 안 되지만, files에서 실행 가능하다.
3. php 확장자 사용 못하게 하기 (블랙리스트 기반 필터링)
우회1. PhP, pHp, pHP 등 대소문자 활용
우회2. .phtml, .php3, php5 등등 자매품 활용 (다른 확장자를 쓸 수 있다.
+ jsp : jspx, jsw 등등
가장 많이 사용하는 우회 방법
정상적인 이미지 다운로드 받은 후에, 그 파일을 hex editor로 오픈
hex값 중간이나 끝에다가 다음 문장을 쓴다.
<?php system($_GET['cmd']);?>
원리
File Signature
jpeg, png, pdf 등등.. 이 파일들은 그 파일이라는 의미로 시그니처(고유 헥사값)가 그 파일 맨 앞에 적혀있다.
정상적인 이미지 헥사값 중간이나 끝에 코드를 삽입하면, 그 파일의 구조도 정상적인 파일과 똑같이 보인다.
파일 업로드 대응 방안 강한 버전은 다음 시간에!!
'모의해킹 공부하기 > 모의해킹 수업 복습' 카테고리의 다른 글
| [15주차-1] File Upload 공격 (이중확장자) (0) | 2024.02.14 |
|---|---|
| [7주차-1] Error Based SQL Injection (0) | 2024.02.08 |
| [6주차] SQL Injection으로 데이터 추출하기 (UNION SQL Injection) (1) | 2023.12.04 |
| [5주차] SQL Injection으로 인증(Authentication) 우회(Bypass) (0) | 2023.12.04 |
| [4주차] Burp Suite 기본 사용 방법 (0) | 2023.11.22 |