iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP phar:协议对象注入技术介绍
  • 724
分享到

PHP phar:协议对象注入技术介绍

2023-06-04 19:06:52 724人浏览 薄情痞子
摘要

前言在之前的BlackHat 2018大会上公布了一款针对PHP应用程序的全新攻击技术。我们将通过这篇文章简单介绍下。来自Secarma的安全研究员Sam Thomas发现了一种新的开发技术,它可以导致php对象注入漏洞——而无需使用PHP

前言

在之前的BlackHat 2018大会上公布了一款针对PHP应用程序的全新攻击技术。我们将通过这篇文章简单介绍下。

来自Secarma的安全研究员Sam Thomas发现了一种新的开发技术,它可以导致php对象注入漏洞——而无需使用PHPunserialize()函数。这项新技术是在BlackHat 2018大会上公布的,利用PHP反序列化漏洞升实现远程代码执行。我们在RIPS代码分析引擎中添加了对这种新型攻击的检测。

常见样式

大多数PHP文件操作允许在访问文件路径时使用各种url样式,如data://、zlib://或php://。这些操作通常用于远程文件,攻击者可以在其中控制文件包含完整的文件路径。

远程文件包含漏洞利用:

include($_GET['file'])include('php://filter/convert.base64-encode/resource=index.php');include('data://text/plain;base64,cGhwaW5mbygpCg==');

Phar元数据

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

// create new Phar$phar = new Phar('test.phar');$phar->startBuffering();$phar->addFromString('test.txt', 'text');$phar->setStub('');// add object of any class as meta dataclass AnyClass {}$object = new AnyClass;$object->data = 'rips';$phar->setMetadata($object);$phar->stopBuffering();

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

PHP phar:协议对象注入技术介绍

PHP对象注入

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

class AnyClass {    function __destruct() {        echo $this->data;    }}// output: ripsinclude('phar://test.phar');

利用

首先,攻击者必须能够在目标WEB服务器上植入一个Phar文件。Sam Thomas发现了一个如何将Phar文件隐藏到JPG文件中的技巧,因此只要常见的图片上传功能就足够。但这并不重要,因为如果攻击者可以在ìnclude(),fopen(),file_get_contents(),file()等操作中控制完整的文件路径,那么将会造成严重的安全漏洞。因此,通常会在用户输入中验证这些功能。但是现在攻击者可以通过phar://注入并获得代码执行。

到目前为止看起来无害的代码示例:

file_exists($_GET['file']);md5_file($_GET['file']);filemtime($_GET['file']);filesize($_GET['file']);

总结

通过RIPS的分析,我们可以自动检测用户输入是否在PHP文件操作中未经验证。

这样,我们检测是否存在文件删除、文件泄露、文件写入,文件操作,文件创建、文件包含(等等)漏洞。

PHP phar:协议对象注入技术介绍

此外,RIPS对敏感字符串分析使我们能够精确评估文件路径是完全还是由攻击者控制,以及是否可以phar://注入。最后,我们在RIPS代码分析器中添加了一个名为Phar Deserialization的新漏洞类型,以检测这种新类型的代码风险。

本文转载自“FreeBuf.COM”,原文由周大涛编译

--结束END--

本文标题: PHP phar:协议对象注入技术介绍

本文链接: https://www.lsjlt.com/news/239117.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP phar:协议对象注入技术介绍
    前言在之前的BlackHat 2018大会上公布了一款针对PHP应用程序的全新攻击技术。我们将通过这篇文章简单介绍下。来自Secarma的安全研究员Sam Thomas发现了一种新的开发技术,它可以导致PHP对象注入漏洞——而无需使用PHP...
    99+
    2023-06-04
  • 基于隐私保护技术的DNS通信协议介绍
    本文提出了一种基于用户数据报协议的DNS传输中用户隐私保护的加密方法:DNSDEA。该方法采用PKI加密体系与DNS协议相融合,不仅解决了域名隐私保护问题,而且与传统DNS体系相兼容,保持了DNS系统的简单、高效的技术特点。域名系统(DNS...
    99+
    2023-06-04
  • PHP开发技术在大数据对象处理中的应用,值得关注吗?
    随着互联网技术的不断发展,我们对数据的需求不断增加,数据量也越来越大。而在处理大数据对象时,PHP开发技术也逐渐得到应用。 PHP是一种广泛使用的开源脚本语言,用于Web开发。它的语法简单易学,支持面向对象编程,还可以与各种数据库进行交互...
    99+
    2023-10-21
    大数据 对象 开发技术
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作