通过CSRF暴力破解用户ID删除所有用户
在测试某应用时发现"删除用户"模块未实施CSRF防护。攻击者只需构造恶意表单诱使管理员点击,即可任意删除用户账户。
基础CSRF攻击验证
删除请求中未包含CSRF令牌,典型PoC如下:
|
|
用户ID暴力破解挑战
系统使用5位数字作为用户ID,但未在任何端点泄露ID信息。受PwnDizzle的博客启发,尝试通过点击劫持暴力破解ID。
技术突破点
- X-Frame-Options限制:应用设置了X-Frame-Options头,阻止iframe加载
- Origin验证:XMLHttpRequest因服务端校验Origin头而失效
- 最终方案:通过iframe靶向提交请求(虽无法读取响应,但请求可成功发送)
攻击脚本实现
编写CSRF脚本自动遍历所有可能的用户ID,当管理员触发时即可删除所有现存用户:
|
|
防御建议
- 实施CSRF令牌机制
- 使用随机UUID替代连续数字ID
- 关键操作需二次认证
- 设置速率限制防止暴力破解
该漏洞演示了当CSRF防护缺失时,结合其他弱点可能造成的灾难性后果。