DEV Community

Cover image for LAB: Path Traversal
tRavOndAtrACk
tRavOndAtrACk

Posted on

LAB: Path Traversal

Path Traversal là gì?
Path Traversal hay còn gọi là Directory Traversal, là một lỗ hổng bảo mật cho phép kẻ tấn công truy cập vào các tệp tin hoặc thư mục nằm ngoài thư mục gốc được chỉ định bởi ứng dụng web.

Lab: File path traversal, simple case
To solve the lab, retrieve the contents of the /etc/passwd file.

Step 1: Sửa tham số tên tệp

Image description

==> DONE

Image description


Lab: File path traversal, traversal sequences blocked with absolute path bypass

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

The application blocks traversal sequences but treats the supplied filename as being relative to a default working directory.

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

Step 1:
Vì không thể sử dụng ../../../../ nên ta có thể chuyển sang các phương án khác. Chuỗi /etc/passwd là đường dẫn tuyệt đối (absolute path), nghĩa là nó không dùng ../, mà chỉ bắt đầu thẳng từ thư mục gốc /.

Image description

==> DONE


Lab: File path traversal, traversal sequences stripped non-recursively

🚫 Vấn đề: ../ bị xóa đi

filename=../../../etc/passwd

Thì ứng dụng sẽ loại bỏ các ../, và chỉ còn lại: filename=etc/passwd

➡ Kết quả: Không truy cập được /etc/passwd như mong muốn.

NOTE: 💡 ....// là một biến thể của ../, khi bị lọc ../ thì ....// vẫn có thể "hóa giải" thành ../ sau khi lọc

Image description

==> DONEEEE!


Lab: File path traversal, traversal sequences stripped with superfluous URL-decode

Path Traversal với kỹ thuật “double URL decoding” — tức là ứng dụng:

Chặn đầu vào nếu thấy chuỗi ../

Nhưng sau đó lại giải mã URL (decode) trước khi sử dụng

➡ Điều này mở ra cơ hội khai thác bằng cách mã hóa chuỗi ../ để qua mặt kiểm tra, rồi để decode sau mới “hiện nguyên hình” là ../.

🖼️ Minh họa luồng xử lý

Client gửi:
filename=%252e%252e%252fetc%252fpasswd

Ứng dụng:
🔹 Kiểm tra → KHÔNG thấy ../ → cho phép
🔹 Decode 1 lần
🔹 Thực thi → tiếp tục decode → ../etc/passwd
🔹 Truy cập thành công → Trả về nội dung

Image description

==> DONEEE!

🔒 Bài học rút ra
Lọc đầu vào phải luôn sau khi decode, không chỉ lọc chuỗi ban đầu.

Kỹ thuật double URL encode là một cách cực kỳ phổ biến để bypass các bộ lọc yếu.

Đây là lỗi thực tế từng xảy ra trên nhiều hệ thống và ứng dụng lớn.


Lab: File path traversal, validation of start of path

🧠 Mục tiêu

Lách qua kiểm tra “đường dẫn phải bắt đầu bằng /var/www/images” để truy cập được tệp /etc/passwd

Cách khai thác

../ (lùi 1 thư mục) → ../ (lùi tiếp) → ../ (lùi đến /)
➡ Truy cập được /etc/passwd

Image description

==> DONE!!


Lab: File path traversal, validation of file extension with null byte bypass

Ứng dụng kiểm tra rằng tên tệp phải kết thúc bằng .png (hoặc một phần mở rộng ảnh hợp lệ).

Nếu bạn thử truy cập: filename=../../../etc/passwd
➝ Bị chặn vì không kết thúc bằng .png

✅ Cách lách kiểm tra: Dùng null byte (%00)
Một số ngôn ngữ lập trình cũ (như C) hiểu ký tự %00 là kết thúc chuỗi.

==> Dùng Payload này: ../../../etc/passwd%00.png

Image description

==> DONEEE!


📌 Tổng kết kiến thức quan trọng

Kỹ thuật bypass Mô tả ngắn gọn
../ Di chuyển lên thư mục cha
Đường dẫn tuyệt đối Bắt đầu bằng / nếu server không kiểm tra
Double URL encoding Giấu ../ bằng %252e%252e%252f
Null byte (%00) Chấm dứt chuỗi sớm, đánh lừa kiểm tra đuôi tệp
Bypass kiểm tra thư mục gốc Bắt đầu bằng thư mục đúng rồi “quay ra” bằng ../
Bypass lọc ../ với biến thể Dùng ....//, %2e%2e%2f, %c0%af, v.v. để tránh bị phát hiện

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.