[PortSwigger Web Security Academy]Lab: File path traversal, traversal sequences stripped with superfluous URL-decode write up

zzsla·2023년 7월 16일
0

문제 정보

This lab contains a file 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.

문제

lab에 들어가면 가상 shop 사이트가 나온다.

분석

제품 이미지에 file path traversal 취약점이 있다.
application은 traversal 시퀀스에 관련된 입력을 막는다.
그리고 나서 쓰기 전에 URL 디코딩을 한다.
목표
/etc/passwd 파일을 검색한다.

일단 제품 이미지에 file path traversal이 있다고 하니까, 먼저 burpsuite를 켜고 아무 제품이나 들어간 다음 image가 get이 될 때 repeater로 보낸다.

그리고 나서 traversal 시퀀스에 관련된 입력을 막는다고 하니까 일단 ../../../../../etc/passwd를 넣고 보낸다.

이번에는 traversal 시퀀스를 중첩시켜서 막아도 다시 traversal 시퀀스가 나오도록 하기 위해 ....//....//....//....//....//etc/passwd를 넣고 보낸다.

둘 다 reponse에 400 Bad Request가 나온다. 그러면 파일 이름을 쓰기 전에 URL 디코딩이 이루어지니까 traversal 시퀀스를 URL 인코딩해서 blocking을 우회하기 한다. 일반 burpsuite Decoder에 간 뒤 /를 녛고, encode에 URL을 넣는다. 그러면 %2f가 나온다.

이 값을 이용해서 filename에 ..%2f..%2f..%2f..%2f..%2fetc/passwd를 넣고 보낸다.

오류가 나오는데 그 이유는 image를 찾을 때 URL 디코딩이 되면서 traversal 시퀀스가 blacking이 된 거 같다. 그래서 URL 인코딩된 값을 한 번 더 인코딩 한다.

이 값을 이용하면 페이로드가 이렇게 나온다. ..%25%32%66..%25%32%66..%25%32%66..%25%32%66..%25%32%66etc/passwd
이 값을 넣고 보내면 /etc/passwd 파일을 볼 수가 있다.

그리고 /etc/passwd를 검색했기 때문에 문제가 풀린 것을 볼 수 있다.

profile
[README]newbi security hacker :p

2개의 댓글

comment-user-thumbnail
2023년 7월 16일

잘봤습니다.

답글 달기
comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기