环境搭建

使用 phpstudy 进行环境搭建
进入官网,点击立即下载即可下载程序源代码
image.png
解压源代码,放在如下位置
image.png
访问 http://127.0.0.1/eyoucms/ 会自动跳转到安装位页面,配置好 mysql 后安装即可,然后访问 http://127.0.0.1/eyoucms/ 会来到用户首页
image.png
管理员登陆页面 http://127.0.0.1/eyoucms/login.php?s=Admin/login
image.png

漏洞复现

配置找回密码使用邮箱

这里配置的管理员/系统的邮箱账号,找回密码时会使用此账号给对应用户发送邮件,没配置的情况下用户无法通过邮箱找回密码(无法使用此功能)
来到后台,配置发件人邮箱,依次点击基本信息-接口API-电子邮箱
image.png
这里使用163邮箱测试发送邮件
image.png
邮件收到通知
image.png

任意用户密码重置

分别注册两个用户,test1/test1、test2/test2
使用注册 test1 时的邮箱 *@foximail.com进行密码找回,然后使用该验证码 + test 2 的绑定邮箱直接进入了 test2 的密码修改界面
image.png
image.png
修改密码为 hack,使用 test2/hack 登录系统
image.png

代码分析

来到找回密码处
image.png
抓取找回密码的数据包,定位到对应的代码
image.png
代码逻辑实现位于 application\user\controller\Users.php#retrieve_password,查询条件 code(验证码)和 lang(语言类型)),缺少 email 参数,从而验证码没有和发送邮箱进行绑定,导致可以使用数据库中存在的任意验证码去重置前台用户密码
image.png

错误解决

注册用户进入个人中心时,sql 提示报错,参考官方的链接即可解决(笔者解决的时候重启 mysql 不能立即生效,隔一段时间后才生效),参考 https://www.eyoucms.com/wenda/744.html