2010-09-04 16 views
1

我想修補我的PHP融合到一個新的漏洞。但是我完全沒有受到這個漏洞的影響。本地文件包含?如何修補這個

請先看這裏:http://www.exploit-db.com/exploits/14647/

=================Exploit================= 
maincore.php 
[php] 
// Locate config.php and set the basedir path 
$folder_level = ""; $i = 0; 
while (!file_exists($folder_level."config.php")) { 
    $folder_level .= "../"; $i++; 
    if ($i == 5) { die("Config file not found"); } 
} 
require_once $folder_level."config.php"; 
define("BASEDIR", $folder_level); 
[/php] 
----exploit---- 

http://{localhost}/{path}/maincore.php?folder_level=LFI 

我認識一個本地文件包含是什麼,但如何只設置一個GET變量使它成爲這是顯示的一段代碼,它甚至不使使用get變量!

感謝任何人清理這個。我想補丁,如果有什麼補丁!

回答

1

它是因爲在地獄中的register_globals設置。

啓用該功能後,可以直接使用名稱來訪問get變量,就像您在代碼中看到的一樣。其中

$_GET['somevar'] 

$somevar; 

有它不是你的服務器上設置一個機會(這實在不應該),所以你可能不容易受到此。但是,如果它啓用了一些關於它的事情。

而且在特定情況下,我敢肯定,這條線

$folder_level = ""; 

在腳本的開頭會清除可能在URL中設置任何東西。

+0

啊,非常感謝!我不知道register_globals的效果,幸運的是它已經關閉了!謝謝 :) – user439391 2010-09-05 12:55:31

-1

修補本地文件包含(LFI)和遠程文件包含(RFI)漏洞的最佳方法是使用白名單。

$safe_folders=array("test","config","includes","special"); 

if(in_array($folder_level,$safe_folders)){ 
    require_once $folder_level."/config.php"; 
} 

代碼的您發佈的其餘部分是垃圾......很明顯,因爲它被黑客入侵和攻擊代碼被張貼到公衆。

相關問題