您的位置 首页 php

PHP新式漏洞利用技术分析

摘要: 这种新式漏洞可以在不使用php函数unserialize的前提下,引起严重的php对象注入漏洞。这个新的攻击方式被他公开在了美国的BlackHat会议演讲上,演讲主题为:”不为人所知的php反 序列化 漏洞”。它可以使攻击者将相关漏洞的严重程度升级为远程代码执行。

前记

前段时间,在美国的BlackHat会议上宣布了一种针对PHP应用程序的新漏洞利用方式。你可以在这篇文章中了解到它。

概要

来自Secarma的安全研究员Sam Thomas发现了一种新的漏洞利用方式,可以在不使用php函数unserialize的前提下,引起严重的php对象注入漏洞。这个新的攻击方式被他公开在了美国的BlackHat会议演讲上,演讲主题为:”不为人所知的php反序列化漏洞”。它可以使攻击者将相关漏洞的严重程度升级为远程代码执行。

流包装

大多数PHP文件操作允许使用各种URL协议去访问文件路径,如data://,zlib://或php://。其中一些包装器通常用于利用远程文件包含漏洞,攻击者可以在其中控制文件包含的完整文件路径。例如,包装器被注入泄漏源代码,否则将被执行,或者注入自己的PHP代码执行:

Phar元数据

但到目前为止,没有人关注phar://。Phar(PHP Archive)文件的有趣之处在于它们包含序列化格式的元数据。让我们创建一个Phar文件,并添加一个包含一些数据作为元数据的对象:

我们新创建的test.phar文件现在具有以下内容。我们可以看到我们的 对象存储 为序列化 字符串

PHP对象注入

如果现在通过phar://包装器对我们现有的Phar文件进行文件操作,则其序列化元数据将被反序列化。这意味着我们在元数据中注入的对象将被加载到应用程序中。如果此应用程序具有已命名的类AnyClass,并且具有魔术方法函数__destruct或__wakeup定义,则会自动调用这些方法。这意味着我们可以在代码库中触发任何 析构函数 或唤醒方法。更糟糕的是,如果这些方法函数对我们注入的数据进行操作,那么这可能会导致进一步的漏洞:

漏洞利用

首先,攻击者必须能够在目标Web服务器上植入精心制作的Phar文件。而Sam Thomas发现了一些关于如何将Phar文件隐藏到JPG中的好技巧,因此常见的图像上传功能已足够。

到目前为止,这似乎仍不是关键,因为攻击者如果可以控制诸如完整的 include ,fopen,file_get_contents,file等文件操作的函数,则可以造成严重的漏洞。因此,通常需要在这些函数使用前验证用户的输入。

但是,phar://在任何文件操作中都会触发反序列化。因此,其他文件操作,例如file_exists简单地检查文件的存在,直到现在被认为对安全风险不太敏感并且受到较少保护。但是现在攻击者可以注入phar://包装器并获得代码执行:

总结

可以通过RIPS的污点分析,然后就可以在PHP文件操作中自动检测用户输入的未经过滤或验证的信息。这样,我们即可检测文件删除、泄露、写入、创建、包含(等等)漏洞。

(作者:曲速未来安全区,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

文章来源:智云一二三科技

文章标题:PHP新式漏洞利用技术分析

文章地址:https://www.zhihuclub.com/77579.shtml

关于作者: 智云科技

热门文章

网站地图