从php反序列化到phar文件

栏目: PHP · 发布时间: 5年前

内容简介:在系统、程序运行的过程中,内存中的变量数据随着运行的结束,自动销毁,而想保存内存中的数据,就应运而生了一种序列化与反序列化的技术,用来将内存中的数据保存到文件中。在php中利用serialize函数,将要处理的数据进行序列化,利用unserialize函数,将处理过的序列化数据进行反序列化输出。

在系统、程序运行的过程中,内存中的变量数据随着运行的结束,自动销毁,而想保存内存中的数据,就应运而生了一种序列化与反序列化的技术,用来将内存中的数据保存到文件中。

php 中利用serialize函数,将要处理的数据进行序列化,利用unserialize函数,将处理过的序列化数据进行反序列化输出。

从php反序列化到phar文件

其中的魔术方法__sleep()与__wakeup()在序列化与反序列化的过程中,可能导致某些漏洞,举某个ctf比赛中的例子

从php反序列化到phar文件

通过show_source函数把当前目录与获取到的变量file结合,将文件内容显示出来,上述代码的突破点就在于绕过__wakeup函数。可利用的方法为CVE-2016-7124,表示对象属性个数的值大于真实的属性个数时就会跳过__wakeup的执行,下面引入php序列化的一些基础知识,大佬可以跳过

从php反序列化到phar文件

上图为序列化后的数据,每个开头字母所代表的含义,简单叙述一下,此ctf题的payload,和上图对照以便理解,O:5:”SoFun”:2:{S:7:”\00*\00file”;s:8:”flag.php”;}

从php反序列化到phar文件

其中O代表类,5代表长度为5,2代表类中声明了两个变量,S代表字符串,7代表长度,受保护的成员在成员名前面加上'*'。这些前缀值在任一侧都有空字节,形成\00*\00。对于php序列化的过程,O:与O:+都可代表类(在经典SugarCRM中绕过preg_ macth的检查,详情可看参考链接)。

phar扩展提供了一种将整个PHP应用程序放入名为“phar”(PHP Archive)的单个文件中的方法,以便于分发和安装。通过php官方手册可以得知,phar文件会包含meta-data的序列化数据,当我们可以控制序列化数据,可以配合魔术方法,达到漏洞利用

从php反序列化到phar文件

既然要利用phar,那咱们本地生成一个demo,看看phar文件中有哪些结构和内容,demo代码下图所示:

从php反序列化到phar文件

通过php官方手册可得知,stub为phar文件中的一个标志:

从php反序列化到phar文件

addFromString以字符串的形式添加一个文件到 phar 档案,setMetadata,Sets phar archive meta-data,根据之前所述会序列化meta-data数据,将生成的文件通过16进制查看,可以找到序列化数据

从php反序列化到phar文件

通过分析phar文件及生成过程,发现phar的标志是通过stub识别,也就是如果可以将phar文件变为gif,txt等类型文件,只要存在stub,就可以被识别成phar文件。通过setstub函数,在stub标志之前加入GIF89a文件头,可绕过很多上传机制。

在此简单做个测试,本地搭建一个只允许上传.gif 或 .jpeg 文件,文件大小必须小于 20 kb的模拟后台(测试代码为最后一个参考链接)

upload.php

从php反序列化到phar文件

upload.html

从php反序列化到phar文件

evil.php

从php反序列化到phar文件

show.php

从php反序列化到phar文件

利用过程如下:

从php反序列化到phar文件

攻击效果图如下:

从php反序列化到phar文件

参考paper中解析phar文件受影响函数,如下图:

从php反序列化到phar文件

参考链接:

https://bugs.php.net/bug.php?id=72663

https://paper.seebug.org/39/

https://i.blackhat.com/us-18/Thu-August-9/us-18-Thomas-Its-A-PHP-Unserialization-Vulnerability-Jim-But-Not-As-We-Know-It-wp.pdf

https://paper.seebug.org/680/

http://www.w3school.com.cn/php/php_file_upload.asp


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精通Nginx

精通Nginx

[瑞士]艾维利 / 陶利军 / 人民邮电出版社 / 2015-2 / 49.00元

Nginx是一个高性能的轻量级Web服务器,本书从配置文件的角度出发,介绍了多种关于 Nginx配置文件的技巧。 本书以模块化风格写成,几乎每一章都是一个独立的模块,读者将能够自由地在各个模块间切换阅读。全书分两部分,第一部分用8章内容介绍了安装Nginx及第三方模块、配置指南、使用mail模块、Nginx作为反向代理、反向代理高级话题、Nginx Http服务器、Nginx的开发以及故障排......一起来看看 《精通Nginx》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具