PHP file_get_contents漏洞

时间:2018-01-13 20:07:10

标签: php security

我正在为客户评估网站门户的安全性,但我发现了一个漏洞。

这是PHP代码:

echo(file_get_contents("template/data/" $_GET['id']));

我能够成功阅读../../../index.php,config.php等。

但我只是希望能够证明这个错误比阅读配置更重要。我读了MySQL用户/传递,但我无法连接到它,因为它只在localhost上侦听。我读过的所有其他代码都没有任何结果。所以基本上我得到的只是一些源代码,这有点不是什么秘密。

我无法进行php过滤,因为它有" template / data /"在字符串的开头。

这段易受攻击的代码还可以做些什么?有什么想法吗?

3 个答案:

答案 0 :(得分:1)

漏洞就是这样。你不能因为你想要而使它变得更危险。但它会为您提供大量信息,正如您已经想到的那样。

此外,在适当的环境中可能会非常危险。门户网站中的每个SSRF错误都可以让您完全控制数据库;而这些错误通常被认为是低影响/低优先级。

检查同一服务器上运行的其他应用程序也很有趣。一个vBulletin论坛?您可以泄漏COOKIE_SALT,并使用它标记您想要的任何恶意数据;您的数据将传递到unserialize。一个wordpress博客?很多插件都将秘密存储为PHP常量,一旦你知道这些秘密就可以接管服务器。

您必须传达给客户的最重要信息是,即使此错误现在泄露信息,将来也会变得更加危险。即使他只是安装主流软件。

答案 1 :(得分:0)

  

我不能做php过滤器的东西,因为它在字符串的开头有“template / data /”。

您可以验证ID。这应该始终使用POST和GET传递的值来完成:

$template_id = $_GET['id'];
if (strlen($template_id) < 1 || $template_id[0] === '.')
{
    echo 'Invalid template ID';
    die;
]
echo(file_get_contents("template/data/$template_id"));

答案 2 :(得分:0)

如果您可以阅读配置以获取有效的用户名和密码,我说您此时的两个主要漏洞是密码重用(例如,查看是否有其他地方登录并使用相同的密码密码,可以提供更多访问权限)或社会工程。您可以使用对文件系统的访问来证明&#34;对于您是管理员或某事的人,并尝试以此方式获得进一步的访问权。

起初看起来似乎不是一个巨大的漏洞,但是获取隐藏信息是装甲中的一个大漏洞。