dedecms5.7 sp2前台修改任意用户密码漏洞(复现)

dedecms5.7 sp2前台修改任意用户密码

前言

其实这个漏洞出来有一段时间了,不算是一个影响特别大的漏洞,毕竟dede是一个内容管理系统,用户这一块本来就基本没有用。该漏洞的精髓就是一个弱类型的比较:‘0.0’==‘0’

漏洞版本

该漏洞出现在最新版的dede上,我复现的版本是v5.7 sp2 utf8版本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bcqxcNSc-1594221057557)(http://pbr6eymqa.bkt.clouddn.com/blog/180713/e31IG2famk.png?imageslim)]

漏洞影响

允许用户修改任意前台用户的密码,不能对管理员账户造成影响,毕竟管理员账户与前台用户的数据表时分开存放的。而且,前台也不能直接登录管理员账户

漏洞利用条件
  1. 开启会员模块

  2. 攻击者拥有一个正常的会员账号

  3. 目标没有设置安全问题

由于dede默认是没有开启会员功能的,也就是我们不能注册用户,所以要复现该漏洞需要自己开启。请大家自行搜索开启
####漏洞复现
首先我先注册两个用户吧
攻击者:000001 密码:123
受害者:test 密码:123
由于dedecms注册用户需要审核,我这里是本地搭的,我直接在数据库里更改一下就行了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-he0Z91Vu-1594221057561)(http://pbr6eymqa.bkt.clouddn.com/blog/180713/k410EihHi4.png?imageslim)]
把-10改为0

update dede_member set spacesta=0 where mid=3

执行了该语句你注册的用户就相当于通过了审核了。
现在我们的目标就是把test用户的密码更改为hacker
第一步:
在登录000001用户的前提下,请求

http://{yourwebsite}/member/resetpassword.php?dopost=safequestion&safequestion=0.0&id={userid}

通过burp抓包,并把这个请求发送的repeater中,可以看到返回的包中有一个链接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sPPjpKgt-1594221057569)(http://pbr6eymqa.bkt.clouddn.com/blog/180713/fCK8DiCaK6.png?imageslim)]
我们直接访问该链接就可以看到一个更改密码的页面:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pUXe29xG-1594221057574)(http://pbr6eymqa.bkt.clouddn.com/blog/180713/k5kLHfD2cc.png?imageslim)]
我们把密码改为hacker,然后试着登录下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sLRMzDkW-1594221057577)(http://pbr6eymqa.bkt.clouddn.com/blog/180713/maDF7LFG93.png?imageslim)]
成功利用!下面我们具体来看看漏洞产生的原因
####漏洞分析
问题出现在resetpassword.php文件的75行处。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nbOGx8Mv-1594221057580)(http://pbr6eymqa.bkt.clouddn.com/blog/180713/87LIF43dCc.png?imageslim)]
这里的代码大概意思就是把我们传过去的安全$safequestion以及$safeanswer与数据库中一开始用户设定的safequestion与safeanswer是否匹配,如果匹配则可以往下进行,相当于验证密保问题。我们要做的就是绕过这里的判断,因为我们这个攻击成功的前提就是用户没有设置密保问题,所以在数据库中safequestion的值如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-55ntUTf2-1594221057583)(http://pbr6eymqa.bkt.clouddn.com/blog/180713/hlHia7gBha.png?imageslim)]
这里需要做的主要是绕过对safequestion的判断,对safeanswer的判断不需要我们绕过,本身就是满足的。我们可不可以直接传一个safequestion=0过去呢?答案是不行的,因为0在php中empty测试时会返回true。所以我们需要绕过的还有empty这个函数
所以我们直接令safequestion=0.0,0.0可以绕过empty检查,而且由于if判断里面的比较是弱类型比较

0.0 == 0
//true

这样我们就会执行sn函数了,继续追踪一下吧,位于dedecms\member\inc\inc_pwd_functions.php
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wGr4mfPO-1594221057587)(http://pbr6eymqa.bkt.clouddn.com/blog/180713/bJ9K3kG9Aa.png?imageslim)]

默认状态下,临时密码的表为空。所以会进入第一个判断,我们去看看newmail函数都做了什么吧。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9TFQmEKn-1594221057591)(http://pbr6eymqa.bkt.clouddn.com/blog/180713/LbKc5jgHF3.png?imageslim)]
主要代码我已经用红框圈出来了,第二个红框中的链接也就是最后修改密码链接,只要拿到它我们就可以改密码了。获得这个链接需要通过抓取返回包。

总结

整个流程大概就到这了,可以很清晰的看到该漏洞就是由于那个弱类型的比较,通过构造请求我们可以控制mid(越权),mid也就是不同用户的编号,所以我们可以更改几乎所有用户的密码,只是还不能对管理员做什么。当然这个漏洞结合另外一个dede漏洞可以更改管理员的密码,后续将会进行复现

在这里插入图片描述

dedecms5.7sp2安装的步骤如下: 1. 首先,你可以在自己的电脑上安装织梦dedecms进行网站后台的熟悉以及站点的建立、调试。 [1] 2. 下载织梦dedecms安装所需的工具,并按照教程一步步进行操作。 [1] 3. 安装完成后,在自定义模型中使用了union、sleep、benchmark、load_file、outfile等语句可能会出现安全警告。 [2] 4. 为了解决这个问题,你需要打开源码目录下的dedesql.class.php和dedesqli.class.php两个文件,用文本编辑器打开。 [3] 5. 在这两个文件中找到safeCheck这个参数,将其修改为FALSE,即$this->safeCheck=FALSE; [3] 通过以上步骤,你就可以成功安装dedecms5.7sp2了。希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [织梦dedecms怎么安装?如何本地环境搭建网站?](https://blog.csdn.net/qq_43557623/article/details/112151218)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [DeDeCMS v5.7 SP2 正式版 前台任意用户密码修改漏洞复现](https://blog.csdn.net/m0_60466340/article/details/121586697)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [DeDeCMS v5.7 SP2 正式版 前台任意用户密码修改 漏洞复现(包括环境搭建)](https://blog.csdn.net/weixin_52497013/article/details/121468861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值