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
==> DONE
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 /.
==> 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
==> 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
==> 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
==> 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
==> 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.