Path Traversal, Directory Traversal

agnusdei·2024년 7월 27일

Path Traversal (Directory Traversal) 공격 설명

Path Traversal 공격은 공격자가 웹 애플리케이션의 파일 시스템에서 제한된 파일에 접근하기 위해 경로를 조작하는 기법입니다. 이 공격은 일반적으로 사용자가 입력한 경로를 검증하지 않거나, 불완전하게 처리할 때 발생합니다. 공격자는 ../와 같은 특수 문자를 사용하여 상위 디렉터리로 이동하고, 민감한 파일에 접근할 수 있습니다.

공격 시나리오

예를 들어, 웹 애플리케이션이 특정 파일을 사용자에게 제공하는 기능을 가지고 있다고 가정해 봅시다. 사용자가 요청한 파일 이름을 기반으로 서버에서 파일을 읽어오는 경우, 공격자는 다음과 같은 요청을 보낼 수 있습니다:

GET /file?name=../../etc/passwd HTTP/1.1

이러한 요청은 서버가 /etc/passwd 파일에 접근하게 만들 수 있으며, 이는 민감한 사용자 정보를 포함하고 있습니다.

access_log 예시

아래는 웹 서버의 access_log 파일의 예시입니다. 이 로그는 요청된 URL, HTTP 메서드, 응답 코드 등을 포함하고 있습니다.

192.168.1.1 - - [27/Jul/2024:10:00:00 +0000] "GET /file?name=../../../etc/passwd HTTP/1.1" 200 1234
192.168.1.1 - - [27/Jul/2024:10:01:00 +0000] "GET /file?name=test.txt HTTP/1.1" 404 567
192.168.1.1 - - [27/Jul/2024:10:02:00 +0000] "GET /file?name=../../../../var/log/auth.log HTTP/1.1" 200 2048

분석

  1. 첫 번째 로그 항목:

    • 요청: GET /file?name=../../../etc/passwd
    • 응답 코드: 200
    • 이 요청은 etc/passwd 파일을 요청한 것으로, 공격자의 성공적인 Path Traversal 공격으로 보입니다. 응답 코드 200은 파일이 정상적으로 반환되었음을 나타냅니다.
  2. 두 번째 로그 항목:

    • 요청: GET /file?name=test.txt
    • 응답 코드: 404
    • 이 요청은 정상적인 파일 요청을 시도했지만, 해당 파일이 존재하지 않아 404 Not Found 응답을 받았습니다.
  3. 세 번째 로그 항목:

    • 요청: GET /file?name=../../../../var/log/auth.log
    • 응답 코드: 200
    • 이 요청도 Path Traversal 공격으로, auth.log 파일에 접근하려고 시도했습니다. 응답 코드 200은 공격자가 또 다른 민감한 파일에 접근했음을 의미합니다.

결론

Path Traversal 공격은 파일 시스템에 대한 불법적인 접근을 허용할 수 있는 심각한 보안 취약점입니다. 위의 로그 분석을 통해 공격자의 행동을 추적하고, 해당 공격을 방지하기 위한 조치가 필요하다는 것을 알 수 있습니다. 이를 방지하기 위해서는 입력값 검증, 파일 경로 정규화, 그리고 보안 설정을 강화하는 것이 중요합니다.

profile
DevSecOps Pentest🚩

0개의 댓글