---
# System prepended metadata

title: Web shell upload via path traversal
tags: [File upload vulnerabilities]

---

# Web shell upload via path traversal

* Bài lab tiếp tục yêu cầu chúng ta upload PHP shell để đọc file `/home/carlos/secret`. Nội dung file shell là `<?php echo file_get_contents('/home/carlos/secret'); ?>`. Sau khi upload file shell và mở file, như trên hình ta chỉ thấy nội dung file shell chứ shell chưa được thực thi. Nghĩa là vị trí chúng ta gửi shell không được cấu hình để thực thi shell.
![Capture01](https://hackmd.io/_uploads/Syjz9_FIa.png)
![Capture02](https://hackmd.io/_uploads/r1jz9OK8p.png)
![Capture03](https://hackmd.io/_uploads/SJiM9uKUa.png)

* Giờ chúng ta cần tìm vị trí upload khác để shell có thể thực thi được. Ta sẽ kết hợp với path traversal. Vào Burp Suite lấy request rồi đưa Repeater để chỉnh sửa. Ta sẽ sửa lại thành `filename="../shell.php"` và gửi. Hệ thống báo lại là đã upload file thành công, tuy nhiên vẫn upload vào folder `avatars/shell.php`.
![Capture04](https://hackmd.io/_uploads/H1oMqdtLa.png)

* Ta chỉnh sửa bằng cách dùng `%2f` thay cho `/` và gửi lại. Lần này thông báo phản hồi là đã upload vào folder `avatars/../shell.php`.
![Capture06](https://hackmd.io/_uploads/ByiMcOt8a.png)

* Bước cuối là chúng ta mở file shell để kiểm tra kết quả. Bây giờ file `shell.php` của chúng ta nằm trong folder `/files/`. Ta thấy kết quả trả về là một chuỗi kí tự, nghĩa là ta đã thực thi được shell.
![Capture07](https://hackmd.io/_uploads/B1sGc_YUT.png)

* Submit chuỗi kí tự và hoàn thành bài lab.
![Capture08](https://hackmd.io/_uploads/ByizcdFIa.png)
![Capture09](https://hackmd.io/_uploads/ByoG9_tL6.png)
