File path traversal, simple case | Dec 12, 2022
Introduction
Welcome to my another writeup! In this Portswigger Labs lab, you'll learn: File path traversal, simple case! Without further ado, let's dive in.
- Overall difficulty for me (From 1-10 stars): ★☆☆☆☆☆☆☆☆☆
Background
This lab contains a file path traversal vulnerability in the display of product images.
To solve the lab, retrieve the contents of the /etc/passwd file.
Exploitation
Home page:

View-source:
<section class="ecoms-pageheader">
<img src="/resources/images/shop.svg">
</section>
<section class="container-list-tiles">
<div>
<img src="/image?filename=25.jpg">
<h3>The Lazy Dog</h3>
<img src="/resources/images/rating2.png">
$81.33
<a class="button" href="/product?productId=1">View details</a>
</div>
<div>
<img src="/image?filename=2.jpg">
<h3>All-in-One Typewriter</h3>
<img src="/resources/images/rating1.png">
$50.04
<a class="button" href="/product?productId=2">View details</a>
</div>
[...]
As you can see, the img tag's attribute src is using a GET parameter called filename.
This might be vulnerable to path traversal!
Let's open one of those product images:


Hmm… What if I can use the ../ to move up a directory level and try to retrieve /etc/passwd file?
To do so, I'll intercept the request via Burp Suite:

When we move up 1 directory level, it outputs No such file. Let's move up more directory levels until we retrieved the /etc/passwd file!

When we move up 3 directory levels, it sucessfully retrieved the /etc/passwd's content!!
What we've learned:
- File path traversal, simple case