我正在为客户端评估webportal的安全性,并发现了一个漏洞。代码基本上是这样做的:
$var = unserialize($_REQUEST['something']);我完全可以控制变量。但是服务器的代码中没有类,它没有太多可控的__destruct、__wakeup等对象。
我还能用这个做点什么吗?比如设置一个$_SESSION变量?有可能吗?有RCE或BoF之类的吗?
发布于 2018-01-15 21:10:13
这取决于您的PHP版本。使用unserialize查找应用程序中的弱点取决于具有易受攻击类的应用程序。如果它们没有任何类,那么应用程序就不会受到攻击。
然而,你可能是幸运的!实际上,我自己并不使用PHP序列化,因为在过去,它非常错误,存在来自PHP本身的严重安全漏洞&。我个人并不熟悉确切的细节,它确实取决于PHP版本(显然您不知道),但是对于执行安全审计的人来说,答案是合法的“从不将用户数据传递到unserialize”的高风险。对于错误的PHP版本,结果可能是一场严重的灾难。
您必须真正知道您在做什么来利用上述漏洞,但最终您会发现PHP解释器本身存在一个远程代码执行漏洞,这给攻击者带来了更大的好处。以下是PHP 7中漏洞的详细情况。这显然不直接适用于您,但它表明该漏洞是真实的,它不依赖于有定义类的用户:
还有一些非常基本的信息:
https://security.stackexchange.com/questions/177663
复制相似问题