在我最近的一个渗透测试项目中,我发现了在同一个重置密码端点上进行 帐户接管的 3 种方法。
三种方式包括:XFF绕过、resp响应修改、批量匹配
在对应用程序进行一些模糊测试之后,我发现了应用程序上用于重置密码的一处接口。
OTP暴力测试:
通过一些模糊测试,我发现了一个用于重置密码的接口,然后我尝试通过这个接口重置我的密码。
模糊测试提示:通常我会检查应用程序使用哪种编程语言,然后我转到 assetnote 列表并开始使用它进行模糊测试。
选择是否通过电话或电子邮件接收 OTP
我继续并点击发送,并添加了任何 OTP,然后拦截了请求
添加XFF头:
添加X-Forwarded-Host:127.0.0.1
绕过了速率限制,并在每次请求时不断更改标头中的 ip,例如:192.168.1.2、192.168.1.3、...
获取正确的 OTP *不同的响应长度*然后只需知道 ID 或电子邮件即可更改任何帐户的密码。
更改resp响应:
在检查输入错误的 OTP 的响应时,我注意到响应主体只是数字(-10),没有设置或更改任何 cookie 或会话,这意味着您可以轻松修改resp响应。
这里将-10修改为1测试:
会重定向到页面上设置新密码,这意味着设置新密码的逻辑存在错误,导致帐户被接管。
批量匹配:
在重置密码的最后一步设置新密码时,我对参数进行了模糊测试,发现了电子邮件参数。
在网页中添加密码后拦截请求,并添加带有其他用户电子邮件加密值的电子邮件参数,您将能够更改其他用户的密码,然后接管帐户。
这里需要js逆向,得到邮箱的加密值,邮箱和密码的rsa加密值。
添加另一个用户的电子邮件参数(在这种情况下甚至没有检查确认密码参数。
免费获取网安资料:
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关