No alive nodes found in your cluster 从php反序列化到phar文件 | 码农网

从php反序列化到phar文件

栏目: PHP · 发布时间: 5个月前

来源: www.secpulse.com

本文转载自:https://www.secpulse.com/archives/94680.html,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有。

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

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

从 <a href='http://www.codercto.com/courses/a/5.html'>php</a> 反序列化到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


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

查看所有标签

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

Effective STL中文版

Effective STL中文版

[美]Scott Meyers / 潘爱民、陈铭、邹开红 / 清华大学出版社 / 2006-1 / 30.00元

STL是C++标准库的一部分。本书是针对STL的经验总结,书中列出了50个条款,绝大多数条款都解释了在使用STL时应该注意的某一个方面的问题,并且详尽地分析了问题的来源、解决方案的优劣。一起来看看 《Effective STL中文版》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具