DedeCMS 最新版(20180109)任意用户 密码修改漏洞分析 m o c . 5 发布时间:2018 年 01 月 11 日 综述 b u 2018 年 01 月 09 日,Dedecms 官方更新了 DedeCMS V5.7 SP2 正式 h t i g 版,后续在 10 日有网友爆出其存在任意用户密码重置漏洞。 攻击难度:低。 危害程度:高。 官方修复情况如下: 目前暂未发布升级补丁 什么是 DedeCMS? 织梦内容管理系统(DeDeCMS) 以简单、实用、开源而闻名,是国内最知 名的 PHP 开源网站管理系统,也是使用用户最多的 PHP 类 CMS 系统,在经 历多年的发展,目前的版本无论在功能,还是在易用性方面,都有了长足的发 @绿盟科技 2017 http://www.nsfocus.com 展和进步。广泛应用于中小型企业门户网站,个人网站,企业和学习网站建 设,在中国,DedeCMS 应该属于最受人们喜爱的 CMS 系统。 影响的版本 2018 年 01 月 09 日之前的所有版本。 技术分析 m o c . 5 此漏洞点出现在忘记密码功能处.文件/member/resetpassword.php: b u h t i g 在找回密码时,当$dopost = safequestion 时,通过传入的 member_id 查询 出对应 id 用户的安全问题和答案信息,当我们传入的问题和答案不为空,而且 等于之前设置的问题和答案是就进入 sn()函数。 这里如果用户设置了问题和答案,我们并不知道问题和答案是什么,就无 法进入 sn()函数。但是如我此用户没有设置问题和答案呢?此时系统默认问题 是”0”,答案是空。 那么我们传入答案$safeanswer = “”时: @绿盟科技 2017 http://www.nsfocus.com $row['safeanswer'] == $safeanswer;成立。 但是传入问题$safequestion = “0”时: if(empty($safequestion)) $safequestion = '',而$row[safequestion] = “0” 此时$row[safequestion] == $safequestion;不成立。 所以要让$row[safequestion] == $safequestion;成立必须绕过 if 判 断,此时如果属性 PHP 的话,会想到 PHP 的弱类型问题,所以在类型转换的 m o c . 5 时候往往会发生意料之外的情况。 下面我们来看看如何绕过 if empty 的判断: b u h t i g 可以看到使用”0.0”,”0.”,”0e1”都可以绕过前面的判断,最后进入 sn()函 数,继续跟进。 sn()函数在文件/member/inc/inc_pwd_functions.php: @绿盟科技 2017 http://www.nsfocus.com m o c . 5 这里当第一次进行忘记密码操作时,$row 应该时空,所以进入第一个 if 条件 b u 发送邮件 insert 一条记录到 dede_pwd_tmp 表里;如果之前进行过忘记密码 h t i g 操作,但是时间已经超过 10 分钟,那么继续进行发送新验证码的操作 update dede_pwd_tmp 表里面的数据,跟进当前文件的 newmail()函数。 例如这里第一次进行 insert 操作(update 操作是一样的)时,将 8 为的 随机字符串$randval 加密后下乳 dede_pwd_tmp 表中,然后当$send = N 时 @绿盟科技 2017 http://www.nsfocus.com (上面默认传入 N),将随机字符串$randval 拼接到 url 中返回,返回的 url 为: http://www.attack.com/member/resetpassword.php?dopost=getpasswd &id=$mid&key=$randval $mid 就是可控的参数 member_id,既然这列已经返回了重置密码的验证码 key 那么就可以直接重置对应 id 的用户密码了,跟进一下重置密码的过程。 m o c . 5 b u h t i g 首先在重置密码时,判断输入的 id 对应用户是否进行过密码重置操作,如果没 有就退出了。 @绿盟科技 2017 http://www.nsfocus.com m o c . 5 b u 然后判断传入的 key 的 md5 是否等于数据库中的 pwd 内容,如果相等就直接 h t i g 修改了 dede_member 表中对应用户的密码了。 漏洞验证 直接发送如下请求即可获取重置密码的链接: http://localhost/DedeCMS-V5.7-UTF8SP2/member/resetpassword.php?dopost=safequestion&safequestion= 0e1&safeanwser=&id=1 @绿盟科技 2017 http://www.nsfocus.com 然后获取的重置面链接为: http://localhost/DedeCMS-V5.7-UTF8SP2/member/resetpassword.php?dopost=getpasswd&id=1&key=D2kI Qomh 然后就可以直接重置密码了。 m o c . 5 h t i g b u 这里修改 id 的值即可修改对应的用户的密码。 但是这个漏洞存在一个缺陷,因为通过分析可以看出来只有没有设置安全 问题的用户才会受此漏洞的影响;而且只能修改前台用户的密码。 防护方案 临时方案可以暂时关闭会员功能,等待官方发布升级补丁然后升级。 声明 ========== 本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任 何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或 者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为 @绿盟科技 2017 http://www.nsfocus.com 此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传 播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未 经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将 其用于商业目的。 关于绿盟科技 ============ m o c . 5 绿盟科技(NSFOCUS Co., Ltd.)是中国网络安全领域的领导企业,致力于网 络和系统安全问题的研究、高端网络安全产品的研发、销售与网络安全服务, 在入侵检测/保护、远程评估、 DDoS 攻击防护等方面提供具有国际竞争能力 b u 的先进产品,是国内最具安全服务经验的专业公司。有关绿盟科技的详情请参 h t i g 见: http://www.nsfocus.com @绿盟科技 2017 http://www.nsfocus.com

pdf文档 绿盟 DedeCMS最新版任意用户密码修改漏洞分析

文档预览
中文文档 8 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共8页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
绿盟 DedeCMS最新版任意用户密码修改漏洞分析 第 1 页 绿盟 DedeCMS最新版任意用户密码修改漏洞分析 第 2 页 绿盟 DedeCMS最新版任意用户密码修改漏洞分析 第 3 页
下载文档到电脑,方便使用
本文档由 路人甲 于 2022-07-17 01:19:21上传分享
加微信群 有优惠
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。