VI. Tầm ảnh hưởng của các lỗ hổng Directory traversal
Giống với các lỗ hổng Information disclosure, các lỗ hổng Directory traversal giúp kẻ tấn công có thể thu thập nội dung các tệp tin nhạy cảm, mã nguồn chương trình một cách toàn vẹn và đầy đủ hơn. Là một bước cơ sở giúp họ có thể trực tiếp tìm kiếm các cách khai thác trong mã nguồn chương trình, hoặc xây dựng một cuộc tấn công Deserialize, ... Dạng lỗ hổng này hiện nay xuất hiện khá nhiều do chức năng đọc và hiển thị tệp tin là một trong những chức năng chính của các ứng dụng web, cách khai thác lỗ hổng đa dạng cũng như những đoạn code chưa thực sư "an toàn" trước sự đe dọa của dạng lổ hổng này. Các lỗ hổng Directory traversal còn có thể trực tiếp gây ra lỗi Local File Inclusion trong trường hợp nó ghi được vào file Log hay File environment, dẫn tới chiếm quyền điều khiển server.
VII. Công cụ hỗ trợ tìm kiếm các lổ hổng Directory traversal
Khi phát hiện một tính năng hiển thị nội dung tệp tin với tham số có thể thay đổi bởi người dùng. Chúng ta có thể nghĩ tới lỗ hổng Directory traversal.
- Tính năng Intruder của Burp Suite
Bằng cách đặt vị trí tấn công tại mục Positions:
Chúng ta có thể lựa chọn hình thức tấn công bằng kỹ thuật fuzzing. Tại mục Payloads, chọn Add from list, ở đây có hai danh sách fuzzing sẵn có của Burp Suite:
Hoặc có thể tự sử dụng cheat sheet của mình bằng cách chọn Load items from file:
VIII. Các phương pháp ngăn ngừa lỗ hổng Directory traversal
Nhiều ứng dụng web không thể tránh khỏi việc tiếp nhận các yêu cầu tham số từ người dùng để hiển thị nội dung tệp tin, chúng ta có thể sử dụng các phương hướng phòng ngừa dạng lỗ hổng này như sau:
-
Kiểm tra giá trị input từ người dùng với white list là danh sách các giá trị hợp lệ, cho phép hiển thị nội dung tới giao diện người dùng. Đồng thời kết hợp việc tìm kiếm các ký tự nhạy cảm trong input người dùng như
:
,/
,%
,../
,..\
, ... -
Đối với nhân viên vận hành và bảo trì hệ thống, sau khi triển khai hệ thống hoặc cài đặt phần mềm, ứng dụng mới, nên chủ động tìm kiếm các lỗ hổng Directory trong hệ thống thông qua các công cụ scan web vulnerabilitis và cố gắng không cài đặt phần mềm chưa rõ tính bảo mật từ bên thứ ba.
-
Máy chủ web cũng cần được cấu hình hợp lý (phân quyền thư mục, nghiêm cấm duyệt thư mục, ...) và luôn chú ý đến việc phát hành các phần mềm và ứng dụng khác nhau được sử dụng, đồng thời nâng cấp các phiên bản phần mềm mới kịp thời.
-
Phòng chống lỗ hổng Directory traversal trong Apache: Đối với Apache, quản trị viên có thể sửa đổi tệp cấu hình để cấm người dùng thực hiện traversal các thư mục và danh sách tệp. Ví dụ quản trị viên có thể sửa đổi tệp
httpd.conf
trong thư mụcconf
. -
Phòng chống lỗ hổng Directory traversal trong Nginx:
Tệp nginx.conf
config lỗi:
location /files { alias /home/; }
Chúng ta chỉ cần thay đổi location /files
thành /files/
sẽ có thể ngăn chặn lỗ hổng Directort traversal trong server nginx.
Tài liệu tham khảo
- https://portswigger.net/web-security/file-path-traversal
- https://viblo.asia/p/tim-hieu-ve-unixlinux-p1-QpmlebyV5rd
- https://wiki.matbao.net/kb/co-ban-cau-truc-thu-muc-trong-linux/
- https://github.com/digininja/DVWA
- https://www.php.net/manual/en/security.filesystem.nullbytes.php
- https://en.wikipedia.org/wiki/List_of_URI_schemes
- https://en.wikipedia.org/wiki/ROT13
- https://portswigger.net/burp/documentation/desktop/tools/intruder/using
- https://httpd.apache.org/docs/2.4/configuring.html
- https://www.nginx.com/resources/wiki/start/topics/examples/full/
- https://www.docker.com/
- https://phoenixnap.com/kb/linux-alias-command#:~:text=Vim%20or%20nano-,What%20Is%20an%20Alias%20in%20Linux%3F,and%20avoiding%20potential%20spelling%20errors.