jyamethyst21 님의 블로그

FILE UPLOAD 취약점 본문

보안 & IT 지식 🌺

FILE UPLOAD 취약점

jyamethyst21 2026. 4. 27. 22:02

파일 업로드 취약점 (File Upload Vulnerability) 정의

파일 업로드 취약점은 사용자가 업로드한 파일에 대해 서버가 적절한 검증을 수행하지 않을 때 발생한다. 공격자는 이를 악용하여 실행 가능한 스크립트 파일(예: 웹쉘)을 서버에 업로드하고, 이를 통해 시스템 명령 실행, 내부 파일 접근, 권한 상승 등의 행위를 수행할 수 있다.


1. 기본 구조 이해

파일 업로드 취약점은 대부분 다음과 같은 흐름에서 발생

  • 파일 확장자 또는 MIME 타입 검증이 미흡한 경우
  • 업로드 경로가 외부에서 직접 접근 가능한 경우
  • 업로드된 파일이 서버에서 실행 가능한 위치에 저장되는 경우

이러한 조건이 결합되면 공격자는 업로드 기능을 통해 서버 제어 권한을 획득할 수 있다.

2. 필터링 우회 방식

2.1 Content-Type 우회

서버가 파일의 실제 내용이 아닌 Content-Type 헤더를 기반으로 검증하는 경우, 이를 조작하여 우회 가능

  • 실행 파일을 이미지 형식으로 위장
  • 서버는 이를 정상 이미지로 인식
  • 실제로는 서버에서 실행 가능한 코드 포함

이처럼 검증 기준이 클라이언트 입력에 의존하면 취약점이 발생한다.

2.2 확장자 필터링 우회

블랙리스트 기반 필터링은 취약할 수 있음

  • 특정 확장자만 차단 (예: php)
  • 대소문자 변형 또는 우회 확장자 사용 시 필터링 우회 가능
  • 서버는 이를 동일하게 해석하여 실행

즉, 단순 문자열 기반 필터링은 안전하지 못하다.

3. 업로드 이후 공격 흐름

파일 업로드 취약점은 단순 업로드로 끝나지 않음

3.1 웹쉘 실행

업로드된 파일에 접근 가능한 URL을 확보하면, 공격자는 시스템 명령 실행, 디렉터리 탐색, 서버 내부 구조 파악 등이 가능해짐

이 과정에서 서버의 루트 경로나 주요 디렉터리를 탐색하게 된다.

3.2 서버 내부 정보 탐색

웹쉘을 통해 다음과 같은 정보 접근이 가능

  • 환경 설정 파일
  • 데이터베이스 계정 정보
  • 내부 서비스 경로

특히 설정 파일 내에는 인증 정보가 포함될 가능성이 높다.

3.3 경로 조작 및 직접 접근

업로드된 파일의 실제 저장 경로를 추적하여 직접 접근하는 방식도 사용된다.

  • 다운로드 URL 구조 분석
  • 경로 변형을 통한 직접 접근
  • 서버 내 파일 구조 탐색

이 방식은 파일 접근 제어가 미흡할 때 효과적이다.

4. 실행 조건 기반 공격

일부 업로드된 파일(웹쉘)은 특정 조건에서만 실행되도록 구성될 수 있다.

  • 파라미터 입력 시 명령 실행
  • 조건 만족 시 로직 동작
  • 웹 요청 기반 제어

이는 탐지를 어렵게 만들고, 공격 지속성을 높인다.

5. 취약점 발생 원인 정리

파일 업로드 취약점은 다음과 같은 구조적 문제에서 발생한다.

  • 클라이언트 입력값 신뢰
  • 블랙리스트 기반 검증
  • 서버 실행 경로에 파일 저장
  • 접근 제어 미흡