Path Traversal 공격은 공격자가 웹 애플리케이션의 파일 시스템에서 제한된 파일에 접근하기 위해 경로를 조작하는 기법입니다. 이 공격은 일반적으로 사용자가 입력한 경로를 검증하지 않거나, 불완전하게 처리할 때 발생합니다. 공격자는 ../와 같은 특수 문자를 사용하여 상위 디렉터리로 이동하고, 민감한 파일에 접근할 수 있습니다.
예를 들어, 웹 애플리케이션이 특정 파일을 사용자에게 제공하는 기능을 가지고 있다고 가정해 봅시다. 사용자가 요청한 파일 이름을 기반으로 서버에서 파일을 읽어오는 경우, 공격자는 다음과 같은 요청을 보낼 수 있습니다:
GET /file?name=../../etc/passwd HTTP/1.1
이러한 요청은 서버가 /etc/passwd 파일에 접근하게 만들 수 있으며, 이는 민감한 사용자 정보를 포함하고 있습니다.
아래는 웹 서버의 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
첫 번째 로그 항목:
GET /file?name=../../../etc/passwd200etc/passwd 파일을 요청한 것으로, 공격자의 성공적인 Path Traversal 공격으로 보입니다. 응답 코드 200은 파일이 정상적으로 반환되었음을 나타냅니다.두 번째 로그 항목:
GET /file?name=test.txt404404 Not Found 응답을 받았습니다.세 번째 로그 항목:
GET /file?name=../../../../var/log/auth.log200auth.log 파일에 접근하려고 시도했습니다. 응답 코드 200은 공격자가 또 다른 민감한 파일에 접근했음을 의미합니다.Path Traversal 공격은 파일 시스템에 대한 불법적인 접근을 허용할 수 있는 심각한 보안 취약점입니다. 위의 로그 분석을 통해 공격자의 행동을 추적하고, 해당 공격을 방지하기 위한 조치가 필요하다는 것을 알 수 있습니다. 이를 방지하기 위해서는 입력값 검증, 파일 경로 정규화, 그리고 보안 설정을 강화하는 것이 중요합니다.