### 简要描述: 找回密码处 设置的链接不好把。。 ### 详细说明: 找回密码处 发送邮件给找回密码的地址 但是找回密码的地址只有一个变量。 只要知道要找回的账户 就可以直接爆破。 http://127.0.0.1/thinksaas2/index.php?app=user&ac=resetpwd&mail=admin@admin.com&set=1d8c9f71eaa6923fc9d3cd5d10aea4ce 找回密码的地址。 app ac mail 这些都是知道的 只有set不知道。 在/app/user/action/forgetpwd.php处。 ``` $resetpwd = md5(rand()); $new['user']->update('user',array( 'email'=>$email, ),array( 'resetpwd'=>$resetpwd, )); //发送邮件 $subject = $TS_SITE['base']['site_title'].'会员密码找回'; $content = '您的登陆信息:<br />Email:'.$email.'<br />重设密码链接:<br /><a href="'.$TS_SITE['base']['site_url'].'index.php?app=user&ac=resetpwd&mail='.$email.'&set='.$resetpwd.'">'.$TS_SITE['base']['site_url'].'index.php?app=user&ac=resetpwd&mail='.$email.'&set='.$resetpwd.'</a>'; echo $content; ``` 可以看到 只有$resetpwd 不知道。 但是 $resetpwd = md5(rand()); 是随机的 然后再md5 RAND_MAX 只有 32768 所以可以爆破之。 写个脚本 循环给1-32768 md5 一次 然后再载入burpsuite 进行爆破。 在测试过程中 最少的一次 只有300多。 最多的一次20000多 这个都看运气了。。 爆破速度也是很快的 吃个饭完了就好了。 ### 漏洞证明: 循环脚本。 [<img...
### 简要描述: 找回密码处 设置的链接不好把。。 ### 详细说明: 找回密码处 发送邮件给找回密码的地址 但是找回密码的地址只有一个变量。 只要知道要找回的账户 就可以直接爆破。 http://127.0.0.1/thinksaas2/index.php?app=user&ac=resetpwd&mail=admin@admin.com&set=1d8c9f71eaa6923fc9d3cd5d10aea4ce 找回密码的地址。 app ac mail 这些都是知道的 只有set不知道。 在/app/user/action/forgetpwd.php处。 ``` $resetpwd = md5(rand()); $new['user']->update('user',array( 'email'=>$email, ),array( 'resetpwd'=>$resetpwd, )); //发送邮件 $subject = $TS_SITE['base']['site_title'].'会员密码找回'; $content = '您的登陆信息:<br />Email:'.$email.'<br />重设密码链接:<br /><a href="'.$TS_SITE['base']['site_url'].'index.php?app=user&ac=resetpwd&mail='.$email.'&set='.$resetpwd.'">'.$TS_SITE['base']['site_url'].'index.php?app=user&ac=resetpwd&mail='.$email.'&set='.$resetpwd.'</a>'; echo $content; ``` 可以看到 只有$resetpwd 不知道。 但是 $resetpwd = md5(rand()); 是随机的 然后再md5 RAND_MAX 只有 32768 所以可以爆破之。 写个脚本 循环给1-32768 md5 一次 然后再载入burpsuite 进行爆破。 在测试过程中 最少的一次 只有300多。 最多的一次20000多 这个都看运气了。。 爆破速度也是很快的 吃个饭完了就好了。 ### 漏洞证明: 循环脚本。 [<img src="https://images.seebug.org/upload/201402/05163408dda409c1a9bb8e6e88de56e4e1c75628.jpg" alt="1.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/05163408dda409c1a9bb8e6e88de56e4e1c75628.jpg) [<img src="https://images.seebug.org/upload/201402/0516345861465270e4c678fe6ff3a137205a2c4d.jpg" alt="2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/0516345861465270e4c678fe6ff3a137205a2c4d.jpg) 循环出来的数据。 然后载入Burpsuite [<img src="https://images.seebug.org/upload/201402/051635461b99c04c1fc733b6c3f5d8333e979f80.jpg" alt="3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/051635461b99c04c1fc733b6c3f5d8333e979f80.jpg) 设置好变量 [<img src="https://images.seebug.org/upload/201402/0516363769a11c889ad038d02fe13a3222ea8b48.jpg" alt="4.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/0516363769a11c889ad038d02fe13a3222ea8b48.jpg) 开始爆破。 [<img src="https://images.seebug.org/upload/201402/0516371347326183986a69da792dd3fc32bbff8c.jpg" alt="5.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/0516371347326183986a69da792dd3fc32bbff8c.jpg) 观察length 可以知道哪个是正确的。 可以看到我这个在7446的时候 就成功了。 然后直接访问 [<img src="https://images.seebug.org/upload/201402/05163825b33b963caf812537476c8d9d055f3db6.jpg" alt="6.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/05163825b33b963caf812537476c8d9d055f3db6.jpg) 重置成功。