公告:九九网站目录为广大站长提供免费收录网站服务,会员可在线完成投稿无需添加友情链接。只收录内容正规合法的网站;快审网站软文10元

点击这里在线咨询客服
新站提交
  • 网站:8464
  • 待审:14
  • 小程序:9
  • 文章:3613
  • 会员:21118

 

前记

前段时间,在美国的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文件操作中自动检测用户输入的未经过滤或验证的信息。这样,我们即可检测文件删除、泄露、写入、创建、包含(等等)漏洞。

(本文仅代表作者观点,不代表链得得官方立场)

 

 

分享到:

  admin

注册时间:

网站:0 个   小程序:3 个  文章:0 篇

  • 464

    网站

  • 9

    小程序

  • 3613

    文章

  • 118

    会员

赶快注册账号,推广您的网站吧!
热门网站
最新入驻小程序

跳一跳2022-08-22

跳一跳是微信开发的一款小游戏,有

数独大挑战2018-06-03

数独一种数学游戏,玩家需要根据9

答题星2018-06-03

您可以通过答题星轻松地创建试卷

全阶人生考试2018-06-03

各种考试题,题库,初中,高中,大学四六

运动步数有氧达人2018-06-03

记录运动步数,积累氧气值。还可偷

每日养生app2018-06-03

每日养生,天天健康