我正在尝试修补我的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变量!!
感谢任何人清理它。如果有什么需要补丁的话,我想补丁一下!
答案 0 :(得分:1)
它是因为PHP中的地狱register_globals设置。
启用此功能后,可以使用您在代码中看到的名称直接访问get变量。其中
$_GET['somevar']
也是
$somevar;
有可能它没有在你的服务器上设置(它确实不应该),所以你可能不容易受此影响。但如果启用它就可以做些什么。
在你的具体情况下,我非常肯定这一行
$folder_level = "";
在您的脚本开始时,清除可能已在网址中设置的任何内容。
答案 1 :(得分:-1)
修补本地文件包含(LFI)和远程文件包含(RFI)漏洞的最佳方法是使用白名单。
$safe_folders=array("test","config","includes","special");
if(in_array($folder_level,$safe_folders)){
require_once $folder_level."/config.php";
}
您发布的其他代码是垃圾......显然是因为它被黑客攻击并且漏洞利用代码已发布给公众。