漏洞概要
关注数(43)
关注此漏洞
漏洞标题: wecenter3.17反序列化漏洞可重置管理密码
提交时间: 2016-01-21 15:30
公开时间: 2015-12-26 16:56
漏洞类型: 设计缺陷/逻辑错误
危害等级: 高
自评Rank: 15
漏洞状态:
漏洞已经通知厂商但是厂商忽略漏洞
漏洞详情
披露状态:
2016-01-21: 细节已通知厂商并且等待厂商处理中
2016-01-26: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2016-03-21: 细节向核心白帽子及相关领域专家公开
2016-03-31: 细节向普通白帽子公开
2016-04-10: 细节向实习白帽子公开
2015-12-26: 细节向公众公开
简要描述:
wecenter最新版反序列化漏洞可重置管理密码
详细说明:
app/m/weixin.php中
关键代码
$access_token = unserialize(base64_decode($_GET['access_token']));
没有过滤用户的参数$access_token
然后我们可以查找自动加载的类,因为数据库操作都要用到,所以应该会自动加载数据的类,事实也是加载了,全局搜索function __construct或者,找到一个system/aws_model.inc.php,其中__construct无法利用,但是其中还包含__destruct,可以利用
跟进query函数
是个查询sql函数,虽然没有回显,但是更新,插入等功能不需要回显
那我们就要去构造 $this->_shutdown_query这个参数,然后脚本结束,自动调用__destruct()函数,执行我们构造的sql语句。$this->_shutdown_query这个又是私有变量,那么继续查找
类中又有这个公有方法,可以对 $this->_shutdown_query赋值,那么我们就可以构造sql语句了。
$access_token出错的话,会导致程序出错,__destruct函数无法执行,所以我们也可以赋一个值给他。
通过测试代码构造的sql语句,把admin用户密码改为123456
程序密码的加密方式在systems/functions.php
有了加密方式,我们就能构造任意的密码md5值插入到数据库
注意,这边我是本地测试,为了方便,就没有注册公众号(正常网站发布都会有此项功能,官网也有,不需要登录后台),所以我直接把weixin.php其中代码
改成
这样就可以方便测试下面的代码,而无需注册微信公众号。
漏洞证明:
先把admin密码随便更改
然后执行
然后就可以重置admin密码为123456
修复方案:
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2015-12-26 16:56
厂商回复:
漏洞Rank:15 (WooYun评价)
最新状态:
2016-02-26:谢谢反馈,将在下个版本修正
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值
漏洞评价(共0人评价):
评价
-
2016-01-21 18:40 |
表哥
( 实习白帽子 |
Rank:42 漏洞数:11 | 他依然帅气。)
0
-
2016-01-21 19:44 |
Msl
( 路人 |
Rank:27 漏洞数:7 )
0
-
2016-01-21 20:45 |
坏男孩-A_A
( 实习白帽子 |
Rank:81 漏洞数:23 | 膜拜学习中)
0
-
2016-01-27 21:50 |
Sakura丶小樱
( 路人 |
Rank:4 漏洞数:2 | <script>alert(document.cookit)</script>)
0