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
를 검색했기 때문에 문제가 풀린 것을 볼 수 있다.
잘봤습니다.