min8282

[Path traversal] File path traversal, traversal sequences stripped with superfluous URL-decode 본문

Web Security Academy

[Path traversal] File path traversal, traversal sequences stripped with superfluous URL-decode

min8282 2025. 4. 18. 09:33

This lab contains a path traversal vulnerability in the display of product images.

The application blocks input containing path traversal sequences. It then performs a URL-decode of the input before using it.

To solve the lab, retrieve the contents of the /etc/passwd file.

https://portswigger.net/web-security/file-path-traversal/lab-superfluous-url-decode

 

Lab: File path traversal, traversal sequences stripped with superfluous URL-decode | Web Security Academy

This lab contains a path traversal vulnerability in the display of product images. The application blocks input containing path traversal sequences. It then ...

portswigger.net


이번 랩은 상품 이미지 경로에 Path Traversal 취약점이 존재하는 웹 애플리케이션을 대상으로 합니다. 해당 애플리케이션은 입력값에 경로 순회 문자열이 포함되어 있을 경우 이를 필터링하지만, 이후에 한 차례 URL 디코딩이 수행된다는 특징이 있습니다. 이 점을 이용해 /etc/passwd 파일을 읽어내는 것이 목표입니다.

 

1. 초기 화면 분석

 


랩 첫 화면 페이지다. 여러 물건을 판매하는 쇼핑사이트이고 상품 사진들이 메인 사진으로 여러 개 보인다.

랩을 시작하면 여러 상품이 나열된 쇼핑몰 메인 페이지가 보입니다. 각 상품 이미지가 개별적으로 GET 요청을 통해 로드되고 있으며, 이미지 요청 URL에는 filename 파라미터가 사용됩니다.


2. 기본적인 경로 순회 시도

우선, 일반적인 경로 순회 시도부터 해보았습니다. filename 파라미터에 아래와 같이 입력해 보았습니다.

../../etc/passwd

 

하지만, 400번대 상태 코드와 함께 "No search file"이라는 메시지가 반환되었습니다. 

이후 더 깊은 디렉토리까지 시도해 보았지만 결과는 동일했습니다.

../../../../../../../../../../etc/passwd

이쯤 되면 필터링이 적용되고 있는 것이 아닌가 하는 합리적인 의심이 생깁니다.

※ 이런 사고의 흐름도 중요합니다. 만약 내가 개발자라면 이렇게까지 폴더를 깊게 만들었을까? 혹은 입력값에 대한 검증 로직이 중간에 있을까? 이런 질문을 스스로 던지는 것이 핵심입니다.


3. 힌트 - URL 디코딩

문제 설명에서 주어진 "입력값은 필터링된 후 URL 디코딩된다"는 정보를 활용할 차례입니다. 이 말은 곧, 우리가 전달하는 입력값이 디코딩된 후에 실제로 사용된다는 의미입니다. 따라서 우리는 URL 인코딩을 이중으로 적용해 필터링을 우회할 수 있습니다.

위에서 만든 이중 인코딩된 경로를 filename 파라미터에 넣고 요청을 보내면, 상태 코드 200과 함께 /etc/passwd 파일의 내용이 노출됩니다.

여기서 %25는 % 자체를 의미하므로, 서버에서는 이를 한 번 디코딩한 후 필터링을 우회한 실제 경로로 인식하게 됩니다.

 

 

 

 

정리

  • 단순한../ 시도는 필터링에 의해 차단됨
  • 하지만 서버 측의 URL 디코딩 처리로 인해, 이중 인코딩을 통해 필터 우회 가능
  • Burp Suite의 Decoder 기능을 활용해 쉽게 이중 인코딩 가능
  • 실습을 통해 입력값 검증 우회 및 경로 순회 취약점을 이해하고 대응 방향을 고민해 볼 수 있음