搜索

查看: 3236|回复: 11

[PHP] Phar反序列化超详细介绍

[复制链接]
发表于 2023-5-4 17:07:36 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:07:36 3236 11 看全部
目录
  • Phar是什么
  • 如何创建一个Phar 文件
  • 如何反序列化利用
    Phar是什么
    在百度中得到介绍是这样的:
    软件中,PHAR(PHP归档)文件是一种打包格式,通过将许多PHP代码文件和其他资源(例如图像,样式表等)捆绑到一个归档文件中来实现应用程序和库的分发。phar文件本质上是一种压缩文件,会以序列化的形式存储用户自定义的meta-data。当受影响的文件操作函数调用phar文件时,会自动反序列化meta-data内的内容。
    理解为php特有的一种打包方式,需要使用php代码进行大包,且无法通过普通的工具进行解压解包。

    如何创建一个Phar 文件
    创建之前了解Phar文件的组成结构:
    stub:phar文件的标志,必须以 , 结尾,否则无法识别。xxx可以为自定义内容。
    stub这一部分,在了解时发现其实这样写  也是可以正常解析的
    manifest:phar文件本质上是一种压缩文件,其中每个被压缩文件的权限、属性等信息都放在这部分。这部分还会以序列化的形式存储用户自定义的meta-data,这是漏洞利用最核心的地方。
    content:被压缩文件的内容
    signature (可空):签名,放在末尾。

    开始之前需要修改配置php.ini配置文件,修改phar.readonly 配置为Off,之后重启生效

    2022111111250832.png

    Phar反序列化超详细介绍7912 作者:Editor 帖子ID:3012 论坛,软件知鸟论坛_zn60.com


    最常见的创建Phar 文件php代码
    startBuffering();//写入之前开始缓冲Phar写入操作
    $phar->setStub("");//设置stub
    $phar->setMetadata($p);//将自定义的meta-data存入manifest,这一部分就是把序列化的对象加入到meta-data
    $phar->addFromString("test.txt", "test");//添加要压缩的文件(这一步必须要有,如果不设置就无法生成phar文件,文件随便)
    $phar->stopBuffering();//签名自动计算
    ?>
    执行代码后会在当前代码目录下生成test.phar文件,以文本格式查看test.phar文件,在内容中可以看到Test类被序列化写入了。O:4:“Test”:1:{s:4:“test”;N;}

    2022111111250833.png

    Phar反序列化超详细介绍5434 作者:Editor 帖子ID:3012 论坛,软件知鸟论坛_zn60.com


    如何反序列化利用
    我们在构造特殊的meta-data数据后,在php中如果使用一些文件系统函数去引用调用phar文件就会触发反序列化,下面是知道创宇测试确认受影响的函数。

    2022111111250934.png

    Phar反序列化超详细介绍4922 作者:Editor 帖子ID:3012 论坛,软件知鸟论坛_zn60.com


    这里使用is_dir函数,这是一个判断传入的是否是一个目录的函数,创建与之前设置meta-data 的一个Test类,__wakeup魔术方法与__destruct 魔术方法在反序列化对象时都会触发,__destruct 魔术方法是在销毁时触发。
    test) ;
        }
    }
    is_dir('phar://test.phar');//以phar伪协议的格式传入
    ?>
    输出结果,meta-data中的数据被反序列化触发了__wakeup魔术方法,打印了test

    2022111111250935.png

    Phar反序列化超详细介绍7686 作者:Editor 帖子ID:3012 论坛,软件知鸟论坛_zn60.com


    在学习过程中,发现存在伪协议phar://关键词不能出现在开头的情况,师傅们的绕过方法是,使用下面的方式也能达到一样的效果。
    如果在上传对phar文件头进行校验的检测,可以根据相应的文件修改添加文件头,如gif(GIF89a)
    compress.bzip://phar:///test.phar/test.txt
    compress.bzip2://phar:///test.phar/test.txt
    compress.zlib://phar:///home/sx/test.phar/test.txt
    php://filter/resource=phar:///test.phar/test.txt

    到此这篇关于Phar反序列化超详细介绍的文章就介绍到这了,更多相关Phar反序列化内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛!
  • 发表于 2023-6-28 20:46:49 | 显示全部楼层
    素色流年783 2023-6-28 20:46:49 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    发表于 2023-6-29 18:41:18 | 显示全部楼层
    风来时狂放 2023-6-29 18:41:18 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    发表于 2023-6-30 09:44:25 | 显示全部楼层
    幸福341 2023-6-30 09:44:25 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    发表于 2023-6-30 10:13:57 | 显示全部楼层
    老橡树1 2023-6-30 10:13:57 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    发表于 2023-6-30 11:08:48 | 显示全部楼层
    462710480 2023-6-30 11:08:48 看全部
    其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
    发表于 2023-6-30 11:16:06 | 显示全部楼层
    普通人物怨 2023-6-30 11:16:06 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    发表于 2023-6-30 12:09:26 | 显示全部楼层
    贰十岁装成熟装s 2023-6-30 12:09:26 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    发表于 2023-6-30 15:09:02 | 显示全部楼层
    永远爱你冰塘 2023-6-30 15:09:02 看全部
    其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
    发表于 2023-6-30 16:07:47 | 显示全部楼层
    计划你大爷计j 2023-6-30 16:07:47 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    • 您可能感兴趣
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| 小黑屋| 知鸟论坛 |网站地图
    本站资源来自互联网用户收集发布,如有侵权请邮件联系处理。 联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表