IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php反序列化漏洞利用 -> 正文阅读

[PHP知识库]php反序列化漏洞利用

今天看到一篇文章介绍php反序列化漏洞利用,里面讲到了phar文件进行反序列化,原来也了解过,现在又看了一遍,感觉这个漏洞还是挺实用的,记录一下
文章链接:
php反序列化利用方式

1 phar反序列化

1.1phar文件结构

我们可以把phar文件看成一个压缩包格式的文件,它包括以下几个结构

1.a stub
可以理解为一个标志,格式为xxx<?php xxx; __HALT_COMPILER();?>,前面内容不限,但必须以__HALT_COMPILER();?>来结尾,否则phar扩展将无法识别这个文件为phar文件。

2.a manifest describing the contents
phar文件本质上是一种压缩文件,其中每个被压缩文件的权限、属性等信息都放在这部分。这部分还会以序列化的形式存储用户自定义的meta-data,这是上述攻击手法最核心的地方。

3.the file contents
被压缩文件的内容。

4.a signature
签名,放在文件末尾

2.如何生成phar文件
我们可以利用php自带的phar类来生成phar文件,举个例子

<?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();
?>

生成的文件格式
在这里插入图片描述我们可以看到Metadata被序列化存储了。当我们用一些php函数尝试对该phar文件进行读写操作时,便会对Metadata数据进行反序列化,如果找到了合适的魔术方法,便可以触发反序列化漏洞。

1.2受影响的函数

在这里插入图片描述

1.3成功触发反序列化漏洞所需的条件:

    1.phar文件要能够上传到服务器端。
    2. 要有可用的魔术方法作为“跳板”。
    3.文件操作函数的参数可控,且:/、phar等特殊字符没有被过滤。

由于php识别phar文件是通过其文件头的stub,更确切一点来说是__HALT_COMPILER();?>这段代码,对前面的内容或者后缀名是没有要求的。那么我们就可以通过添加任意的文件头+修改后缀名的方式将phar文件伪装成其他格式的文件。

这样可以绕过大多数的白名单检测,非常使用

参考链接:
phar利用

2.反序列化字符逃逸

这个反序列化的利用方法也是很有意思
参考下面这篇文章:
php反序列化字符逃逸
字符串逃逸分变长和变短, 原理都差不多的, 遇到了灵活处理

3.构造pop链

构造pop链主要是找对应的魔术方法和理清各个类魔术方法的调用,然后写对应的exp。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:07:40  更:2021-09-02 11:08:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 22:32:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计