0x00 前言

早上浏览sec-news,发现锦行信息安全发布了一篇文章《【漏洞分析】 织梦前台任意用户密码修改》,看完之后就想着自己复现一下。

该漏洞的精髓是php的弱类型比较,'0.0' == '0',也有一定的限制,只对没有设置安全问题的用户有效(默认是没有设置的)。

0x01 漏洞版本

我复现的是DedeCMS V5.7 SP2正式版,2018-01-09发布的,其他的没测。应该算是最新版本的一个0day了。

0x02 漏洞影响

该漏洞允许攻击者修改任意前台用户密码。

0x03 漏洞利用条件

1,开启会员模块

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

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

0x04 漏洞分析

问题出现在/member/resetpasswordd.php  文件中。dedecms 用的是全局变量解析

一步步看:

这里先接受了一个id变量,用来查询用户。

接下来看到

这里是整个漏洞的核心所在,从数据库中获取safequestion,然后与传过来的数据进行判等。用的是双等号,又因为用户没有设置安全问题,数据库里面默认存的是0。

通过php弱类型的转换'0.0' == '0'了。(内部运算:先是把0.0(浮点数(0.0)转换为int(0),然后字符串('0')转换为int(0),最后 0==0 ,所以相等了。)

直接传0是不行的,因为前面有一个empty的判断,当然你也可以利用十六进制比如:0x0

其内不转换和上面的是一样的。

接下来跟进sn函数(记住这里我们的send默认为N)

继续跟进newmail函数

可以看到当send为N时,直接在前端页面返回了验证码。(而我们这里刚好默认就是N,见前文)
又因为用户id是我们可以控制的,safequestion(默认情况)下可以绕过。

那么也就达成了修改前台任意用户密码的效果。

0x05 漏洞复现

因为这里的模块属于会员模块,包含了member.login.class.php。需要登录才能操作。

那么我先注册一个用户,担任攻击者,再注册另外一个用户担任目标。

请求url应该是这样的:

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

test为攻击者,用户id为2,密码:test。test1为目标,用户id为3,修改密码为:hacker

下面就演示一下用test修改test1用户的过程。

Step1: 登陆test用户

Step2:发送请求url

Step3:请求修改页URL:

http://127.0.0.1/dedecms/member/resetpassword.php?dopost=getpasswd&id=3&key=Dj7PeiRm

Step4:修改用户test1的密码为hacker

Step5: 用修改之后的密码登陆进行验证

验证成功。

0x06  思考与总结

虽然说整个漏洞的关键是那一处弱类型比较,也是php的特性与及开发人员对于特性的掌握不够全面所致。漏洞危害其实不太,dede多用于内容,没有什么用户交互而言。如果需要提供用户交流平台,大多数应该会用discuz。

但我觉得对于用户的权限划分不明才是这个漏洞的根本,可以归根为越权。用户id竟然可以直接由用户控制传输,倘若通过session,那么就算用户安全问题没有设置,可以用弱类型比较,最后也仅限于修改自己的密码。

php的弱类型一直是一个问题,特别是早期没有那么重视安全的时候。多少问题都是出在那里。

转载于:https://www.cnblogs.com/r00tuser/p/8268329.html

【漏洞分析】dedecms有前提前台任意用户密码修改相关推荐

  1. DedeCMS V5.7 前台任意用户密码修改漏洞

    本博客已搬迁至:https://n0puple.github.io/ 此处不再更新文章 本文仅用于技术讨论与研究,文中的实现方法切勿应用在任何违法场景.如因涉嫌违法造成的一切不良影响,本文作者概不负责 ...

  2. DeDeCMS v5.7 SP2 前台任意用户密码修改漏洞复现

    DeDeCMS v5.7 SP2 前台任意用户密码修改漏洞复现 一.漏洞概述 1.简介 织梦内容管理系统(DedeCms) [1] 以简单.实用.开源而闻名,是国内最知名的 PHP 开源网站管理系统, ...

  3. DeDeCMS v5.7 SP2 正式版 前台任意用户密码修改漏洞复现

    文章目录 简介 漏洞限制 影响版本 复现环境 工具准备 一.搭建网站 二.打开服务器代理 三.复现过程 注意 简介 织梦内容管理系统(DedeCms) [1] 以简单.实用.开源而闻名,是国内 最知名 ...

  4. DeDeCMS v5.7 SP2正式版 前台任意用户密码修改 漏洞复现

    漏洞限制 1. 只影响前台账户 2. 只能修改未设置安全问题的账户. 影响版本 DeDeCMSV5.7SP2正式版(2018-01-09) 复现环境及工具 ⒈环境 PHP 5.6 DeDeCMSV5. ...

  5. 任意用户注册任意用户密码修改

    1.任意用户注册 漏洞描述: 用户手机获取的验证码只有四位数字,可对其进行爆破,使用任意手机号进行注册并登录 漏洞验证: 2.任意用户密码修改 漏洞描述: 用户手机获取的验证码只有四位数字,可对其进行 ...

  6. [漏洞复现]织梦CMS前台任意用户修改密码

    1 复现环境 PHP 5.6 DeDeCMSV5.7SP2 正式版(2018-01-09) 复现过程 照葫芦画瓢,水一篇博客. 先下载好该版本的源码,然后解压,搭建过程具体看这篇文章 搭建好以后,反正 ...

  7. 织梦任意前台用户密码修改漏洞复现

    标题:织梦任意前台用户密码修改漏洞复现 (DeDeCMS 前台任意用户密码修改漏洞) ps:工具:phpstudy,burp suite 1.火狐浏览器设置127.0.0.1 8080 端口代理 2. ...

  8. 渗透实战:dedeCMS任意用户密码重置到内网getshell

    渗透实战:dedeCMS任意用户密码重置到内网getshell ## 一.简介 DedeCMS 是一个基于 PHP 和 MySQL 的开源 CMS 系统,它是国内很多网站使用的 CMS 系统之一.在使 ...

  9. 任意用户密码重置(四):重置凭证未校验

    在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区.我把日常渗透过程中遇到的案例作了漏洞成 ...

最新文章

  1. android toolbar 开发总结
  2. 任意角度人脸检测pcn
  3. Android开发中高效的数据结构用SparseArray代替HashMap
  4. 【mysql的编程专题⑥】视图
  5. [Python图像处理] 七.图像阈值化处理及算法对比
  6. Cloud for Customer的设置加载机制
  7. php 多线程处理redis,redis的多线程
  8. php替换指定函数,PHP替换指定字符函数str_replace()的用法
  9. Zookeeper-入门-安装
  10. js判断是手机访问还是电脑访问,进行自动跳转
  11. YUV 和 YUV420
  12. html代码实现全国地图分布,html5 svg浙江地图map省市地区代码
  13. _beginthread 与 _endthread 函数分析 (ReactOS版)
  14. rtmp协议 java_rtmp协议详解 (一) handshake
  15. CAXA中添加气动液压元件库方法
  16. 使用LIME解释CNN
  17. 安装 Ubuntu 22.04.1 LTS 桌面版(详细步骤)
  18. docker守护式安装tomcat(汤姆猫)报错:Error starting userland proxy: listen tcp 0.0.0.0:8888: bind: address alrea
  19. 单键带定时雾化补水仪-DLT8P65SA
  20. 最新 955 不加班的公司名单(2022 版)

热门文章

  1. ijkplayer-添加播放截图功能
  2. jQuery 表格排序插件 Tablesorter 使用
  3. linux手机摩托,[图]摩托罗弹奏Linux顺手机的前生
  4. java构造器构造方法_Java构造器(构造方法/constructor)
  5. K8S 使用 SideCar 模式部署 Filebeat 收集容器日志
  6. php cli运行获取参数,php cli传递参数的方法
  7. rocketMq错误日志所在位置
  8. linux下检查是否安装过某软件包
  9. layer 父弹出框上弹出子弹框窗体大小问题
  10. grid php 用法,grid布局主要用法