CVE-2016-7124漏洞复现
Posted zy-king-karl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CVE-2016-7124漏洞复现相关的知识,希望对你有一定的参考价值。
CVE-2016-7124漏洞复现
__wakeup()魔术方法绕过
实验环境
操作机:Windows 10
服务器:apache 2.4
数据库:mysql 5.0
php版本:5.5
漏洞影响版本:
PHP5 < 5.6.25
PHP7 < 7.0.10
漏洞产生原因:
如果存在__wakeup方法,调用 unserilize() 方法前则先调用__wakeup方法,但是序列化字符串中表示对象属性个数的值大于 真实的属性个数时会跳过__wakeup的执行
漏洞复现
编写测试脚本
Test1.php
脚本上标明接收s参数,对其反序列化后输出name属性的值
访问test1.php
根据代码可以看出反序列化之前先调用了__wakeup 方法,再调用_destruct 方法。
将传入的序列化数据的对象变量个数由1更改为2,页面只执行了__destruct方法,而且输出name属性时报错,是由于反序列化数据时失败无法创建对象。
漏洞利用
更改测试代码
test.php
其中 __destruct方法在调用时将name参数写入wcute.php文件但是由于__wakeup方法清除了对象属性,所以在调用__destruct时已经没有了name属性,因此文件将会写入失败。
将对象属性个数改为2继续尝试,成功绕过__wakeup方法执行,将代码写入文件
以上是关于CVE-2016-7124漏洞复现的主要内容,如果未能解决你的问题,请参考以下文章