您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
PHPCMS v9.6.0任意用户密码重置的方法
紫真2025-05-19 14:29:08phpcms教程已有3人查阅
导读他分析的好像不对。我用我的在分析一次。先来看poc:根据phpcms的框架,定位到源码地址/phpcms/modules/member/index.php 第267到312行
他分析的好像不对。我用我的在分析一次。
先来看poc:
/index.php?m=member&c=index&a=send_newmail&siteid=1&newemail=aa222a@qq.com
根据phpcms的框架,定位到源码地址
/phpcms/modules/member/index.php 第267到312行 $_userid用 param::get_cookie('_reguserid') 来获取
跟进去:/phpv9.6.0/phpcms/libs/classes/param.class.php 第106-117行。 这时候的$var的值是_reguserid, 然后获取前缀。 $var的值就变成了gggCB__reguserid,然后进到sys_auth($_COOKIE[$var], 'DECODE'),由于这个值我们是可控的,那找个可控的地方加密一下,也就是注册的时候,把名字注册成1xxxx(为什么是这样的后面会说) ,然后他会对username进行加密,我们只要注册一个号,然后复制出里面username的值就行。
接着有个if判断,这就是我说文章分析错的地方,这里的$var的值是gggCB__reguserid,根本不在后面的这个数组里面,所以进入不到$value = intval($value);
所以不能intval出数字来,所以文章分析错了,但是还是能密码重置。接着看,返回了$value的值,也就是1xxxx。
省略中间的运行:来到304行,看这句 进行update操作,$newemail的值是我们给的,$_userid是 1xxxx 。
跟进去形成sql修改。语句是这样的。 然后在mysql中,where 1 = '1sFdsfdsf' 是相等的,因为后面的字符串转为了数组1
所以他的语句就变成了 然后重置掉了用户userid为1 的用户
大概的攻击流程是这样的。
注册一个1xxx ,然后获取cookie中的username的值,然后切换一个浏览器,再次打开网页,在f12中,设置cookie的值,注意__reguserid前面的gggCB也要和username的值一样
document.cookie='gggCB__reguserid=2f22C0FxoGesxWq73GqUXpuJBDAAEO_KZL5MuEDDeaEj9w'
然后访问 /index.php?m=member&c=index&a=send_newmail&siteid=1&newemail=q123456@qq.com
看到页面返回1就代表成功了,然后就去
/index.php?m=member&c=index&a=public_forget_password&siteid=1
输入你的邮箱 重置掉userid=1的密码。
先来看poc:
/index.php?m=member&c=index&a=send_newmail&siteid=1&newemail=aa222a@qq.com
根据phpcms的框架,定位到源码地址
/phpcms/modules/member/index.php 第267到312行 $_userid用 param::get_cookie('_reguserid') 来获取
跟进去:/phpv9.6.0/phpcms/libs/classes/param.class.php 第106-117行。 这时候的$var的值是_reguserid, 然后获取前缀。 $var的值就变成了gggCB__reguserid,然后进到sys_auth($_COOKIE[$var], 'DECODE'),由于这个值我们是可控的,那找个可控的地方加密一下,也就是注册的时候,把名字注册成1xxxx(为什么是这样的后面会说) ,然后他会对username进行加密,我们只要注册一个号,然后复制出里面username的值就行。
接着有个if判断,这就是我说文章分析错的地方,这里的$var的值是gggCB__reguserid,根本不在后面的这个数组里面,所以进入不到$value = intval($value);
所以不能intval出数字来,所以文章分析错了,但是还是能密码重置。接着看,返回了$value的值,也就是1xxxx。
省略中间的运行:来到304行,看这句 进行update操作,$newemail的值是我们给的,$_userid是 1xxxx 。
跟进去形成sql修改。语句是这样的。 然后在mysql中,where 1 = '1sFdsfdsf' 是相等的,因为后面的字符串转为了数组1
所以他的语句就变成了 然后重置掉了用户userid为1 的用户
大概的攻击流程是这样的。
注册一个1xxx ,然后获取cookie中的username的值,然后切换一个浏览器,再次打开网页,在f12中,设置cookie的值,注意__reguserid前面的gggCB也要和username的值一样
document.cookie='gggCB__reguserid=2f22C0FxoGesxWq73GqUXpuJBDAAEO_KZL5MuEDDeaEj9w'
然后访问 /index.php?m=member&c=index&a=send_newmail&siteid=1&newemail=q123456@qq.com
看到页面返回1就代表成功了,然后就去
/index.php?m=member&c=index&a=public_forget_password&siteid=1
输入你的邮箱 重置掉userid=1的密码。
本文标签:
很赞哦! (0)
上一篇:phpcms文件目录结构分析介绍
暂无内容 |
暂无内容 |
相关文章
暂无内容 |
暂无内容 |
随机图文
phpcms数据库操作写法和参数介绍
①select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='')②listinfo($where = '', $order = '', $page = 1, $pagesize = 20, $key='', $setpages = 10,$urlrule =phpcms安全漏洞归类整理
phpcms教程介绍常见的phpcms安全漏洞1、宽字节注入漏洞/phpcms/modules/pay/respond.php 位置约16行phpcms的php.ini所在位置
phpcms只是个用PHP写的CMS系统,php.ini是php组件中的配置文件。php.ini文件在php的安装目录下。windows或者Linux直接搜索就可以了。phpcms手机端怎么取消伪静态
若需取消PHPCMS手机端伪静态:注释掉include/extend.func.php中的import_right();修改include/mobile.config.php中正则表达式,允许URL包含字母、数字、下划线和连字符
留言与评论 (共有 0 条评论) |