웹 서비스를 통해 이용자의 파일을 서버의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점이며, 이용자가 업로드될 파일의 이름을 임의로 정할 수 있을 때 발생한다.
Path Traversal
Path Traversal 취약점은 사용자 입력값을 통해 파일 경로를 조작하여, 웹 애플리케이션이 의도하지 않은 서버 내 파일 시스템 경로에 접근하게 만드는 보안 취약점이다.
경로 이동 기호인 ../ 등을 활용하여, 디렉토리 구조 상위로 이동함으로써 민감한 파일에 접근이 가능하다.
| 운영체제 | 파일 경로 | 설명 |
|---|---|---|
| Linux | /etc/passwd |
사용자 계정 정보 |
| Linux | /etc/shadow |
암호화된 비밀번호 |
| Windows | C:\\Windows\\System32\\drivers\\etc\\hosts |
호스트 파일 |
| 공통 | .env |
환경설정 파일 (DB 계정, API 키 포함 가능) |
| 공통 | config.php |
설정 파일 및 데이터베이스 정보 |
파일명 화이트리스트 제한
sample1.txt, manual.pdf 등)경로 정규화 및 검증
$base = realpath("files/");
$path = realpath("files/" . $_GET['file']);
if (strpos($path, $base) !== 0) {
die("허용되지 않은 접근입니다.");
}
../, ..\\\\ 등의 문자열 필터링
%2e%2e%2f, %252e%252e/ 등)파일 경로 하드코딩 또는 DB 매핑
웹 서버 설정을 통한 디렉토리 접근 제한
.htaccess, Nginx의 location 설정 등Malicious File Upload
악성 파일 업로드 취약점은 사용자가 업로드 기능을 악용해 **웹 서버에서 실행 가능한 악성 스크립트 파일(PHP, ASP 등)을 업로드하고 이를 통해 원격 코드 실행(RCE) 등의 공격을 수행할 수 있는 보안 취약점이다.
확장자 우회, MIME 타입 위조, 실행 경로 노출 등의 방법으로 서버 측 코드 실행이 가능해진다.
| 파일명 | 설명 |
|---|---|
shell.php |
PHP 웹쉘 파일 (명령어 실행 기능 포함) |
cmd.asp |
ASP 기반 명령 실행 스크립트 |
image.jpg.php |
이중 확장자 우회를 위한 파일 |
shell.ph%00p |
널바이트 우회 시도 (PHP 해석 방지 우회) |
.jpg, .png, .pdf 등)Content-Type과 서버에서 분석한 MIME 타입 비교.htaccess 설정location 블록을 통해 PHP 실행 차단