我正在为客户评估网站门户的安全性,但我发现了一个漏洞。
这是PHP代码:
echo(file_get_contents("template/data/" $_GET['id']));
我能够成功阅读../../../index.php,config.php等。
但我只是希望能够证明这个错误比阅读配置更重要。我读了MySQL用户/传递,但我无法连接到它,因为它只在localhost上侦听。我读过的所有其他代码都没有任何结果。所以基本上我得到的只是一些源代码,这有点不是什么秘密。
我无法进行php过滤,因为它有" template / data /"在字符串的开头。
这段易受攻击的代码还可以做些什么?有什么想法吗?
答案 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;对于您是管理员或某事的人,并尝试以此方式获得进一步的访问权。
起初看起来似乎不是一个巨大的漏洞,但是获取隐藏信息是装甲中的一个大漏洞。