立即注册找回密码
 

奇瑰网社区

社区官方在线联系

工作时间: 周一到周五早上09:00-11:00, 下午03:00-05:00, 晚上08:30-10:30(周六、日休息)
点击这里给我发消息
QQ: 617155901  E-Mail: [email protected]  E-Mail: [email protected]
用户交流QQ群
①群87904533 ③群943814120 ←提醒:请勿重复加群, 谢谢合作

[分享] Discuz 3.4 越权登陆漏洞分析

[复制链接]

63

主题

80

帖子

1037

积分

网站民审组

Rank: 7Rank: 7Rank: 7

G币
142
信用
8
体力
95

技术大神论坛版主周年纪念

发表于 2020-3-6 15:15:37 | 显示全部楼层 |阅读模式
免费G币领取活动中
本帖最后由 吴大大 于 2020-3-6 18:09 编辑

Discuz 3.4 越权登陆漏洞分析

概述

Discuz是一个通用的社区论坛软件系统。最近看到一个Discuz逻辑漏洞,该漏洞源于Discuz微信登陆功能。Discuz 3.4默认安装了微信登陆。利用这个漏洞攻击者可以越权登陆论坛其他会员的账号甚至是管理员账号,主要还得看脸。

原理

首先看了下作者的描述,“如果有用户点了一下绑定微信,但是并没有绑定” 这句话说的很模糊,开始没有明白什么意思。然后跟进代码看了一下。

图片126.png

漏洞源码位于/upload/source/plugin/wechat/wechat.inc.php文件中。在226-246行:

图片123.png

主要看下代码的逻辑:

第231行:从common_member_wechatmp表查询对应openid的第一条结果,这里openid可以由用户控制。

$mpmember = C::t('#wechat#common_member_wechatmp')->fetch_by_openid($wxopenid ? $wxopenid : $_GET['wxopenid']);

下面是fetch_by_openid函数。

232行:从common表中取出对应uid的所有结果,array_keys($mpmember)返回的是上一步查询数据的uid值。

$mpmembers = C::t('common_member')->fetch_all(array_keys($mpmember));

234-237行:

取上一步的第一条数据,然后从common_member_archive表里取出对应uid的用户数据,将该用户设置为登录状态。

$memberfirst = array_shift($mpmembers);$member = getuserbyuid($memberfirst['uid'], 1);if($member) {    setloginstatus($member, 1296000);

根据上述逻辑,也就是说只要知道用户的openid就能登陆用户的账号。看了下微信接口文档,这个openid是唯一的,并且只有用户授权了之后,公众号才可以获取。这里显然得不到openid。

在作者的payload中没有看到openid参数。

1.png

其实这个Payload只是登陆了openid为空的第一个用户。openid为空的情况目前发现通过/plugin.php?id=wechat:wechat&ac=wxregister&username={name}这种方式可以使openid为空,但注册的是一个新的账号。

根据作者所说 “如果有用户点了一下绑定微信,但是并没有绑定,会写入common_member_wechatmp”,这里“并没有绑定”的意思就是绑定失败,openid为空,但作者使用的何种绑定方法说的很模糊。

第二个是越权解除指定uid绑定的微信。同样在webchat.inc.php,判断csrftoken正确后,删除common_member_wechatmp表中对应uid的数据。

图片124.png

根据以上两个洞,可以遍历并且登陆所有openid为空的账户。先登录第一个openid为空的账号->然后解绑->再登陆之后即为第二个openid为空的用户……,脸好的话是可以登陆admin的。

k6biz8.gif

payload

解除指定uid绑定的微信:/plugin.php?id=wechat:wechat&ac=unbindmp&uid={uid}&hash={formhash}

登陆第一个openid为空的账号:/plugin.php?id=wechat:wechat&ac=wxregister

修复

在最新版本中作者删除了这段代码。下载最新版即可。

图片125.png


参考

https://gitee.com/ComsenzDiszuz/DiscuzX/issue/IPRUI

经团队初步测试该漏洞危害还是很大,新版的dz论坛系统已经修复该漏洞,建议大家升级或自行修复该漏洞。

提供漏洞来源:https://nosec.org/home/detail/2256.html







上一篇:Discuz!3.4版本怎么实现全站HTTPS
下一篇:阿里云的ECS服务器如何安装宝塔Linux面板呢?解决办法
回复

使用道具 举报

0

主题

263

帖子

199

积分

资深会员

Rank: 2

G币
10
信用
0
体力
-4
发表于 2020-3-6 15:19:05 | 显示全部楼层
马上来领取免费的邀请码加入奇瑰吧
打酱油的人拉,回复下赚取积分
回复

使用道具 举报

0

主题

60

帖子

55

积分

资深会员

Rank: 2

G币
0
信用
0
体力
22
发表于 2020-3-6 15:21:15 | 显示全部楼层
为了三千积分!
回复

使用道具 举报

0

主题

263

帖子

199

积分

资深会员

Rank: 2

G币
10
信用
0
体力
-4
发表于 2020-3-6 15:24:17 | 显示全部楼层
马上来领取免费的邀请码加入奇瑰吧
在撸一遍。。。
回复

使用道具 举报

0

主题

77

帖子

130

积分

资深会员

Rank: 2

G币
0
信用
0
体力
32
发表于 2020-3-6 15:30:06 | 显示全部楼层
正好需要 谢谢
回复

使用道具 举报

0

主题

68

帖子

111

积分

资深会员

Rank: 2

G币
0
信用
0
体力
19
发表于 2020-3-6 15:33:52 | 显示全部楼层
马上来领取免费的邀请码加入奇瑰吧
我了个去,顶了
回复

使用道具 举报

0

主题

255

帖子

190

积分

资深会员

Rank: 2

G币
10
信用
0
体力
-4
发表于 2020-3-6 15:46:34 | 显示全部楼层
路过
回复

使用道具 举报

使用高级回帖 (可批量传图、插入视频等)

发表回复

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
Powered by Discuz! X3.4 ( 粤ICP备18094825号-1 知道创宇云安全  |网站地图
Copyright © 2014-2020 www.qiguiwl.cn All Rights Reserved.
快速回复 返回顶部 返回列表