디렉터리 트래버설 공격이란?

2024. 12. 5. 02:00카테고리 없음

반응형

 

디렉터리 트래버설 (Directory Traversal)


1. 개념과 정의

디렉터리 트래버설(Directory Traversal)은 웹 애플리케이션 또는 파일 관리 시스템의 보안 취약점을 악용하여 공격자가 허가되지 않은 디렉터리와 파일에 접근할 수 있게 만드는 공격 기법입니다.
이 취약점은 일반적으로 파일 경로를 처리하는 코드에서 사용자 입력값을 제대로 검증하지 않을 때 발생합니다.

공격자는 ../ 또는 ..\\ 등의 특수 문자열을 사용하여 디렉터리 경로를 이동하며, 서버의 민감한 파일(예: 설정 파일, 사용자 데이터, 암호 파일 등)을 읽을 수 있습니다.


2. 주요 원리

디렉터리 트래버설 공격은 파일 시스템 내에서 상대 경로를 통해 상위 디렉터리로 이동하는 특성을 이용합니다. 공격자는 다음과 같은 경로 조작으로 파일 시스템을 탐색합니다:

  • 예제 입력:
    • /etc/passwd (유닉스 계열의 사용자 정보 파일)
    • ../../../../windows/system32/config/system (Windows 시스템의 설정 파일)

(1) 상위 디렉터리 이동

  • ../ 또는 ..\\를 사용하여 부모 디렉터리로 이동.
  • 공격자가 여러 번 반복해 루트 디렉터리까지 이동 가능.

(2) 파일 경로의 불완전 검증


3. 공격의 결과

디렉터리 트래버설 취약점은 시스템 내 민감한 정보 유출, 서비스 중단, 또는 더 심각한 취약점의 발판으로 작용할 수 있습니다.

(1) 민감한 정보 유출

  • 사용자 비밀번호, 서버 설정 정보, 인증 토큰 등 민감한 데이터가 유출될 수 있음.
  • 예: /etc/passwd (리눅스 사용자 정보), web.config (IIS 설정 파일).

(2) 권한 상승

  • 취득한 정보를 기반으로 시스템에서 권한을 상승하는 추가 공격을 수행.

(3) 서비스 거부

  • 대량의 요청을 통해 파일 시스템을 과도하게 탐색해 서버 자원을 고갈.

(4) 악성 코드 삽입

  • 공격자가 악성 파일을 실행하거나 기존 파일을 수정.

4. 공격 시나리오

(1) 일반적인 웹 서버의 취약점

(2) 업로드 파일 검증 부족

  • 파일 업로드 시, 공격자가 디렉터리를 변경해 특정 경로에 파일을 저장.
  • 예: /uploads/../../../var/www/html/shell.php를 업로드하여 원격 코드 실행 가능.

(3) 로그 분석 시스템

  • 로그 파일을 동적으로 열고 보여주는 시스템에서 디렉터리 트래버설을 이용해 민감한 파일 탐색.

5. 방지 방법

(1) 사용자 입력값 검증

  • 파일 경로를 구성할 때 사용자 입력값을 엄격히 검증.
  • 허용 목록 기반 검증(Allowlist) 사용:
    • 특정 파일 이름만 허용.
    • 예: view?file=example.txt → /safe_path/example.txt로 매핑.

(2) 상대 경로 사용 제한

(3) 특수 문자열 제거

  • ../와 같은 특수 문자열을 제거하거나 이스케이프 처리.
  • 주의: 단순히 문자열 제거만으로는 충분하지 않음.

(4) 파일 시스템 권한 관리

  • 웹 서버가 실행되는 디렉터리에 최소 권한을 부여.
  • 민감한 파일이 웹 서버가 접근할 수 없는 디렉터리에 위치하도록 설정.

(5) 웹 애플리케이션 방화벽(WAF)

  • 디렉터리 트래버설 공격 패턴을 탐지하고 차단하는 WAF를 사용.

(6) 입력 데이터 인코딩

  • 사용자 입력을 경로로 변환하기 전에 URL이나 파일 경로 인코딩 처리.

6. 탐지 방법

(1) 로그 분석

  • 서버 로그에서 비정상적인 ../ 패턴이 포함된 요청 탐지.

(2) 침투 테스트

  • 자동화된 도구를 사용하여 취약점을 스캔:
    • Burp Suite, OWASP ZAP 등을 이용.

(3) 코드 리뷰

  • 파일 경로를 생성하는 부분에서 사용자 입력값의 처리 방식을 검토.

(4) IDS/IPS 사용

  • 침입 탐지 및 방지 시스템으로 비정상적인 요청 차단.

7. 사례

(1) GitHub Repository 유출

  • 한 개발자가 디렉터리 트래버설 공격으로 서버 내 민감한 리소스를 노출.
  • 공격자가 ../을 활용해 소스 코드를 획득.

(2) 웹 애플리케이션의 백엔드 노출

  • 디렉터리 트래버설을 통해 서버 설정 파일(예: nginx.conf)이 노출되고, 이후 더 큰 공격으로 연결됨.

 

디렉터리 트래버설은 간단한 공격 기법임에도 불구하고, 웹 애플리케이션에서 발견되면 치명적인 피해를 초래할 수 있습니다. 이를 예방하기 위해서는 입력 검증안전한 경로 처리가 필수적이며, 정기적인 보안 점검과 테스트를 통해 잠재적인 취약점을 사전에 방어해야 합니다.

반응형