码迷,mamicode.com
首页 > 其他好文 > 详细

CVE-2016-7124漏洞复现

时间:2019-08-30 20:53:05      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:info   wak   src   apache   mys   服务   pac   更改   创建对象   

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漏洞复现

标签:info   wak   src   apache   mys   服务   pac   更改   创建对象   

原文地址:https://www.cnblogs.com/zy-king-karl/p/11436872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!