반응형

**Directory Traversal(경로 조작 공격)**을 실무 관점에서 정리할게.
이번에도 원리 → 공격 예시 → 공격 목표 → 방어 방법/WAF 대응까지 포함했어.


🔥 1. Directory Traversal 개념

정의:
Directory Traversal은 웹 애플리케이션에서 파일 경로 입력값을 조작하여, 원래 접근이 제한된 서버 파일이나 디렉토리에 접근하는 공격을 말해.

쉽게 말하면:

  • 공격자가 ../ 같은 경로 조작으로 상위 디렉토리로 이동
  • 서버 내부 중요한 파일(설정, 비밀번호, 로그 등)을 읽거나 다운로드 가능

🔹 2. 공격 원리

 
[사용자 입력: 파일 경로][서버 파일 접근][검증 미비][상위/민감 파일 접근]

예시:

 
GET /download?file=report.pdf HTTP/1.1

공격자가:

 
GET /download?file=../../../../etc/passwd HTTP/1.1
  • 서버가 입력값 검증 없이 처리하면 /etc/passwd 파일 내용이 노출됨

🔹 3. 실무 공격 예시

1) Linux / Unix

 
../../../../etc/passwd ../../../../var/www/html/config.php

2) Windows

 
..\..\..\Windows\System32\drivers\etc\hosts ..\..\..\inetpub\wwwroot\web.config

3) URL 인코딩 우회

 
..%2f..%2f..%2fetc%2fpasswd

🔹 4. 공격 목표

  • 서버 민감 정보 획득: /etc/passwd, DB 설정 파일
  • 웹 애플리케이션 설정 파일 탈취: config.php, web.config
  • 소스 코드 유출 → 추가 취약점 공격 발판
  • 로그, 인증 정보 탈취

🔹 5. WAF / 보안관제 대응

  1. 경로 패턴 탐지
  • ../, ..\\, %2e%2e%2f, %252e%252e%252f
  • URL 인코딩 디코딩 후 탐지
  1. 허용 경로 제한
  • 서버 파일 접근 시 화이트리스트 경로만 허용
  • 상대경로/상위경로 사용 금지
  1. 이상 행위 탐지
  • 반복적으로 상위 디렉토리 접근 시도
  • 공격 IP 차단, 알람 발생
  1. 권한 제한
  • 웹서버 계정으로 접근 가능한 디렉토리 최소화
  • 민감 파일은 접근 불가

🔹 6. 개발 단계 방어

  • 입력값 검증: .. 또는 / 사용 제한
  • 정규식/화이트리스트 경로만 허용
  • realpath() 등 함수로 실제 경로 확인 후 접근
  • 민감 파일 디렉토리는 웹 서버 밖에 저장
 
// PHP 예시: realpath로 경로 검증 $baseDir = '/var/www/uploads/'; $filePath = realpath($baseDir . $_GET['file']); if(strpos($filePath, $baseDir) !== 0) { die("Invalid file path"); }

🎯 한 문장 요약

Directory Traversal = 입력값으로 파일 경로를 조작하여 원래 접근이 제한된 서버 파일을 읽거나 다운로드하는 공격이며, 입력 검증과 화이트리스트, 경로 제한, WAF 룰로 방어 가능하다.

반응형

+ Recent posts