반응형
File Upload Vulnerability를 실무 관점에서 정리할게.
이번에도 원리 → 공격 예시 → 공격 목표 → 방어 방법/WAF 대응까지 포함했어.
🔥 1. File Upload Vulnerability 개념
정의:
File Upload Vulnerability는 웹 애플리케이션에서 사용자가 파일을 업로드할 수 있는 기능을 악용하여, 서버에 악성 파일(웹쉘 등)을 업로드하고 실행하는 공격을 말해.
쉽게 말하면:
- 사용자가 업로드할 수 있다고 허용된 파일을 공격자가 서버에서 임의 실행 가능하도록 조작
- 서버 장악, 정보 탈취, 악성코드 배포 가능
🔹 2. 공격 원리
[웹 업로드 기능] → [서버에 파일 저장] → [웹에서 실행 가능]
- 웹 애플리케이션이 파일 확장자·내용 검증 미비
- 업로드 후 서버 접근 경로를 통해 실행 가능
- PHP, JSP, ASP 등의 웹쉘 업로드가 대표적
🔹 3. 실무 공격 예시
1) 웹쉘 업로드
<?php system($_GET['cmd']); ?>
- 파일명: shell.php
- 공격자 브라우저에서:
2) 확장자 우회
- .php.jpg, .php;.jpg, .phtml
- MIME 타입 검증 회피
3) 이미지 파일 변조
- 정상 이미지에 PHP 코드를 삽입 (GIF89a<?php ... ?>)
- 서버에서 이미지 처리 시 코드 실행 가능
🔹 4. 공격 목표
- 서버 원격 제어(RCE)
- 민감 정보 탈취
- 악성코드/랜섬웨어 배포
- 내부 네트워크 추가 공격
🔹 5. WAF / 보안관제 대응
- 확장자/파일 타입 검사
- 허용된 확장자만 업로드
- MIME 타입 검증
- 파일 내용 검사
- Magic Number 검사
- 스크립트 코드 삽입 탐지
- 업로드 경로 제한
- 웹에서 직접 실행 불가한 디렉토리 사용
- 서버 실행 권한 없는 디렉토리 설정
- 이상 행위 탐지
- /uploads/*.php 접근 시 경고
- 반복 공격 IP 차단
- 실시간 격리 / 백신 스캔
- 업로드 파일 자동 검사
- 악성코드/웹쉘 탐지
🔹 6. 개발 단계 방어
- 확장자 Whitelist: .jpg, .png, .pdf 등
- 파일 이름 변경: 원본 이름 대신 랜덤 문자열로 저장
- 업로드 경로 제한: 실행 불가, 읽기 전용 디렉토리
- 파일 내용 검증: Magic Number + MIME 타입
- 웹쉘 탐지 룰 적용: PHP, JSP, ASP 코드 패턴 차단
// PHP 예시: 실행 불가 디렉토리에 저장 $targetDir = '/var/www/uploads/'; $targetFile = $targetDir . bin2hex(random_bytes(8)) . '.' . $ext; move_uploaded_file($_FILES['file']['tmp_name'], $targetFile);
🎯 한 문장 요약
File Upload Vulnerability = 업로드 기능을 악용해 서버에 악성 파일을 넣고 실행시키는 공격이며, 확장자/내용 검증, 실행 불가 디렉토리, WAF 룰로 방어 가능하다.
반응형
'2. 보안 > 2. 보안 관제' 카테고리의 다른 글
| [보안_GPT] RCE(Remote Code Execution) 란? (0) | 2025.11.14 |
|---|---|
| [보안_GPT] Directory Traversal 이란? (0) | 2025.11.14 |
| [보안_GPT] Command Injection 이란? (0) | 2025.11.14 |
| [보안_GPT] CSRF(Cross-Site Request Forgery)란? (0) | 2025.11.14 |
| [보안_GPT] 크로스 사이트 스크립트(XSS)란? (0) | 2025.11.14 |