【SRC案例分析-23】业务逻辑相关-奇葩的任意账号密码重置
原创
low洞百出
low洞百出
low洞百出
2026年8月20日 15:00
湖南
在小说阅读器读本章
去阅读
免责声明:本公众号分享的日常渗透测试、网络安全及 SRC 漏洞挖掘相关文章,内容仅供学习交流与技术研究参考。严禁将文中技术、方法用于任何非法入侵、未授权测试、数据窃取等违法违规行为。若因擅自使用文章内容开展非法操作或传播文章,所引发的一切法律责任与经济损失,均由使用者自行承担,与本公众号及作者无关。如有内容侵权,请及时联系处理。
前言
聊到任意账号密码重置,大家脑子里估计已经能列出一张\"经典漏洞清单\"了——验证码复用、校验码泄露、跳过校验步骤、修改响应包……套路虽多,但核心就一句话:业务逻辑校验不到位。但今天这个案例,怎么说呢……我测完之后沉默了三秒,然后笑出了声。
案例分享
简单介绍一下目标测试站点:1、用户可通过手机验证码注册,创建账号,但是权限较低;2、登陆方式可通过账号密码登陆,也可通过手机短信验证码登陆。
话不多说,能注册先注册,注册进去是一个社区系统,在社区可以看到许多用户,点击主页就可以看到账号信息以及账号绑定的手机号
不过说实话,社区平台嘛,公开社交属性强,看到这些信息也并不意外。但问题在于——光有账号没密码,就像拿着门牌号却没有钥匙,中看不中用。
来到登录处,手机短信验证码无法爆破,无法绕过验证码。
点击一下忘记密码试试,发现需要输入账号名以及对应的手机号来获取短信验证码进行重置密码,修改密码接口/api/user/UpdatePwd
POST /api/user/UpdatePwd HTTP/1.1Host: target.comContent-Type: application/json
{ \"username\": \"test_user\", \"phone\": \"138****1234\", \"verifyCode\": \"000000\", \"newPassword\": \"Admin@123\"}
先试试自己的账号,输入账号、手机号点击发送,手机收到验证码,还是想试试看能不能绕过短信验证码,随便输入验证码000000,发送数据包提示验证码错误
{\"code\": 400, \"msg\": \"验证码错误\"}
输入正确的验证码试试,发现成功
{\"code\": 200, \"msg\": \"成功\"}
那么直接修改响应包呢,不行,果然还是做了校验的,没那么容易绕过,后面对着数据包又改了几下,尝试置空验证码值,提示验证码不能为空
{\"code\": 400, \"msg\": \"验证码不能为空\"}
一狠心直接删除验证码参数
POST /api/user/UpdatePwd HTTP/1.1Host: target.comContent-Type: application/json
{ \"username\": \"test_user\", \"phone\": \"138****1234\", \"newPassword\": \"Admin@123\"}
再次发送居然返回成功
{\"code\": 200, \"msg\": \"成功\"}
???
真的假的啊,再次确认了一下,改密码,确实是成功了。又回到短信验证码登录处试了一下该方法看能不能绕过直接,发现不行。
看着这站点的逻辑,也是有点绷不住了,确实是很逆天
传验证码 → 服务端校验 → 错了就拦 → 没毛病不传验证码 → 服务端:\"咦,没这个参数?那就不校验了,放行吧
到此已经是高危到手,通过该漏洞,配合前面提到的可获取他人账号信息直接就可以实现任意账号密码重置,进而接管他人账号形成完美闭环——拿到所有门牌号的钥匙,可以打开所有门牌号对应的锁。
总结
测试不能只看表面,你所看到的都是开发者想让你看到的。细心点、多尝试说不定能有意料之外的收获!!!
感谢关注,出货不迷路!
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论