在一次网站漏洞挖掘的过程中,通过对js代码的分析发现网站在密码重置的时候存在逻辑漏洞,通过前端对原密码进行校验导致任意密码重置
01
—
获取用户名
进入登录界面,存在用户名猜解,用户名不存在的时候返回不存在,存在的时候显示密码不正确,得到用户名system
02
—
JS分析
F12分析前端代码发现login方法中根据Item1的值进行不同的处置
1、当Item2为2的时候进入到修改密码页面
2、获取响应包中的Item3的值作为账号
3、Item4的值作为原密码赋值给pwd标签(这里Item4经过了编码,经抓包测试为base64编码)
接着进入到changpwd方法中
1、获取pwd标签的值作为系统返回的原密码
2、获取txtOld标签的值作为用户输入的原密码
3、判断如果两者相等则进入后续修改密码的操作
总结下密码修改的过程如下:
1、登录抓包修改返回包的Item1为2进入密码修改
2、修改响应包Item3的值为system
3、修改响应包Item4的值为base64编码的数据作为原密码并赋值给pwd标签
4、将pwd标签的值与输入的原密码进行对比相同则进行密码修改
不难发现这个原密码pwd标签的是从前端获取的,所以是可以被我们进行修改的,故存在任意密码重置漏洞
03
—
漏洞复现
登录抓包修改返回包的Item1为2进入密码修改
修改Item3的值为system
随便输入一个密码的base64编码(这里输入000000)值作为系统返回的原密码,进入到密码修改页面
前面分析可以知道将返回的item4经过base64解码后赋给pwd标签,查看到前端代码可以看到pwd标签的值已经被修改为设置的000000了
此时在修改密码页面填入原密码000000,新密码888888,这个原密码会与pwd标签的值进行对比相等则验证成功进行修改密码
修改之后在登录填入system/888888成功登录
<<< END >>>
原创文章|转载请附上原文出处链接
更多工具|关注作者查看
作者|混子Hacker
原文始发于微信公众号(混子Hacker):【渗透实战】一次JS审计发现前端校验渗透
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论