Burp Suite · 2026-04-06

Burp로 Zip Slip 및 파일 인젝션 탐지 기법

Burp를 이용해 Zip Slip과 파일 인젝션 취약점을 체계적으로 식별하는 절차와 검사 예제, 응답 분석 및 완화책을 초급자도 이해하기 쉬운 자료

작성일 : 2026-04-06 ㆍ 작성자 : 관리자
post
목차

개요

파일 인젝션은 서버 측에서 사용자 입력을 파일 경로나 압축 해제 경로로 신뢰할 때 발생한다. Zip Slip은 ZIP 내부 경로에 상대 경로(예: "../")가 포함되어 저장 경로를 벗어나게 하는 취약점이다. 본문은 Burp를 사용한 실무 중심의 검사 흐름과 쉽게 따라 할 수 있는 예제를 담고 있다. 특히 Burp Zip Slip 테스트, 파일 인젝션 Burp 검사, Burp 파일 취약점 탐지 키워드를 중심으로 설명한다.

준비물 및 환경 설정

검사 전 기본 설정이 필요하다.

  • Burp Suite(Community 또는 Professional). Professional은 자동 스캐닝과 확장 지원에서 유리하다.
  • Proxy 설정으로 대상 트래픽 캡처.
  • Repeater, Intruder, Scanner(가능 시), Extensions(예: Logger++) 사용.
  • 테스트용 ZIP 파일과 간단한 압축 도구(압축 시 내부 경로 조작 가능).

기본 탐지 흐름

검사는 단계별로 진행한다. 각 단계는 빠짐없이 확인한다.

  • 대상 파라미터 식별
  • 요청 변조와 페이로드 주입
  • 서버 응답과 파일시스템 변화 관찰
  • 결과 정리 및 우선순위 지정

대상 파라미터 식별

파일 업로드, 압축 해제, 파일 경로를 취급하는 모든 파라미터를 찾는다. 일반적으로 다음을 주의한다.

  • multipart/form-data의 filename 필드
  • 파일 경로를 전달하는 JSON이나 폼 파라미터
  • 서버가 압축을 자동 해제하는 API 엔드포인트

요청 변조 전략

다음 기법으로 요청을 변조한다. 각각 Burp에서 손쉽게 적용 가능하다.

  • 파일 이름에 상대 경로 삽입: ../../../../etc/passwd 형태
  • 압축 내부 경로에 상대 경로 포함: ZIP 내부 파일 경로를 ../webroot/shell.php 등으로 설정
  • Content-Type 변경: 서버가 확장자 기반 처리 시 우회 가능성 확인
  • Null byte(구형 처리 환경에서): file.php%00.jpg (현대 환경에서는 크게 효과 없음)

Burp에서의 실제 절차

간단한 워크플로우로 구성한다.

  • Proxy로 요청 캡처 → Repeater로 전송
  • 파일 업로드 요청을 복제 후 Intruder로 페이로드 주입
  • 응답과 파일 생성 여부를 모니터링

페이로드 예시

다음은 ZIP 내부에 넣을 수 있는 테스트용 경로 목록이다. Burp Intruder의 payload list로 사용하면 좋다.

../../../../etc/passwd
..\..\..\..\windows\system32\drivers\etc\hosts
../webroot/shell.php
..%2F..%2F..%2F..%2Fetc%2Fpasswd
zip_injection/../exploit.txt

응답 분석 포인트

응답만으로 판단하기 어려운 경우가 있다. 다음 항목을 종합적으로 확인한다.

  • HTTP 상태 코드: 200, 201, 204 등 성공 코드 주목
  • 서버가 반환한 경로 문자열 또는 오류 메시지(예: "File written to /var/www/html/")
  • 업로드 후 파일 접근 가능성(직접 호출 또는 인클루드 행위로 확인)
  • 로그 파일, 에러 메시지, 타임스탬프 변화

실습 예: Repeater로 테스트

업로드 요청을 Repeater로 복사한 뒤 filename을 변조하여 서버 반응을 확인한다. 변조 후 서버가 경로 정보를 반환하면 추가 탐색이 가능하다.

자동화와 스캐닝 팁

Burp Zip Slip 테스트를 효율화하려면 다음을 고려한다.

  • Intruder의 payload payloads에서 다양한 인코딩과 상대 경로 조합 사용
  • Scanner 규칙(유료)을 통해 엔드포인트 자동화 검사
  • Custom extension으로 ZIP 내부 경로를 자동 생성해 대량 테스트

결과 해석 및 권고된 완화책

취약점 확인 시 권장되는 방어 원칙은 다음과 같다.

  • 입력값 검증: 파일 이름과 내부 경로에서 상대 경로 요소(../) 제거
  • 화이트리스트: 허용되는 파일명과 확장자 목록만 허용
  • 안전한 경로 결합: 사용자 입력을 경로로 직접 사용하지 않고 서버 내부 고정 디렉터리에 더함
  • 압축 해제 정책: ZIP 내부 경로를 검사해 루트 벗어남을 금지
  • 권한 분리: 업로드 디렉터리를 웹 루트와 분리하고 실행 권한 제한

예시: 압축 해제 전 검증(의사 코드)

# 압축 파일의 각 항목 경로를 검사하는 의사 코드
for entry in zip.namelist():
    normalized = os.path.normpath('/safe/dir/' + entry)
    if not normalized.startswith('/safe/dir/'):
        raise Exception('Unsafe path detected')
    # 안전하면 추출
    zip.extract(entry, '/safe/dir/')

체크리스트

  • 파일 업로드 엔드포인트 식별 여부
  • ZIP 내부 경로 검증 유무
  • 서버가 반환하는 경로 노출 여부
  • 업로드 디렉터리의 권한 설정 검토
  • 자동화 테스트로 반복 검증

마무리

Burp 파일 취약점 탐지는 반복과 관찰이 핵심이다. 단일 응답만으로 결론 내리지 말고 다양한 페이로드와 인코딩을 시도하며 결과를 교차 검증한다. 초반에는 간단한 페이로드로 시작하고, 성공 징후가 보이면 범위를 넓혀 정밀 검사한다. 이러한 절차를 통해 Zip Slip 같은 파일 인젝션 취약점을 체계적으로 찾아낼 수 있다.

Burp Zip Slip 테스트 파일 인젝션 Burp 검사 Burp 파일 취약점 탐지 Zip Slip 파일 업로드 취약점 디렉터리 트래버설 Burp Suite 웹 취약점 검사