关键漏洞让我在外部门户漏洞赏金计划中成为管理员

本文详细记录了作者在外部漏洞赏金计划中发现的一个严重安全漏洞。通过简单的参数篡改,攻击者可将普通用户权限提升至管理员,并实现XSS代码注入。文章完整展示了漏洞发现过程、利用方法和修复建议,涉及API权限验证、输入过滤等关键技术点。

关键漏洞让我在外部门户漏洞赏金计划中成为管理员

引言

大家好!我是来自埃及的Abdelzaher,漏洞赏金猎人,代号@ln0rag。我热衷于发现安全漏洞并帮助让互联网更安全。今天我想分享在外部门户漏洞赏金计划中发现的一个有趣且相当关键的发现。

目标

该漏洞发现于(domain.com)——我们暂且这样称呼(实际域名已根据计划政策匿名处理),这是我参与的外部漏洞赏金计划的一部分。最初只是一个简单的头像上传测试,最终却演变成了通过一个损坏的端点实现管理员权限提升、安全功能绕过甚至恶意代码注入的途径。

我的发现(简单说明)

该网站有一个允许用户更新个人资料信息的功能。然而,它没有正确检查用户是否被允许更改某些敏感字段。这让我能够立即将我的账户从普通用户修改为管理员!

发现过程详解

开始阶段

首先,我在domain.com上创建了一个普通用户账户:

[图片:用户注册界面]

登录后,我看到了具有基本权限的普通用户仪表板:

[图片:用户仪表板界面]

头像上传功能

我注意到"更换头像"功能并决定进行测试。这个过程乍一看似乎很安全——它采用两步法,服务器会生成特殊的临时链接用于上传图片。

正常流程如下:

  1. 应用向服务器请求安全上传链接 2.服务器提供临时的Amazon S3链接 3.图片直接上传到Amazon 4.应用告诉服务器"使用这个新头像"

[图片:头像上传流程示意图]

关键发现时刻

关键发现出现在最后一步——当应用告诉服务器使用哪个头像时。我想:“如果我不使用Amazon链接呢?如果我在这里放其他东西会怎样?”

于是我尝试在请求体中发送:

1
2
3
{
  "avatar": "data:text/html,<script>alert(1)</script>"
}

令我惊讶的是,服务器接受了它!

[图片:服务器响应截图]

并且返回了大量信息:

[图片:服务器返回数据截图]

但随后我想:“如果它不验证头像URL,我还能更改什么?”

大规模利用

我决定测试修改同一请求中的其他字段。我尝试更改用户等级、积分甚至用户角色:

1
2
3
4
5
6
7
{
  "rankPoints": 20000,
  "rank": "Diamond",
  "roles": "ADMIN",
  "avatar": "data:text/html,<script>alert(1)</script>",
  "twoFactorAuth": true
}

[图片:修改请求截图]

而且成功了!服务器返回200 OK并确认了所有更改:

[图片:服务器确认截图]

刷新页面后,我可以看到更改立即生效:

[图片:更改生效截图]

我的账户现在显示"Diamond会员"状态,15,000积分(这让用户无需提前购买商品就能获得更高折扣),最重要的是——XSS有效载荷执行并显示警告框:

[图片:XSS执行截图]

注意:此漏洞打开了众多额外的攻击向量,包括通过文件上传操作实现的潜在RCE和其他需要进一步调查的严重利用!

漏洞危险性

此漏洞特别严重,因为:

  • 任何人都可以成为管理员——无需特殊技能,只需一个API调用
  • 可以绕过安全功能——用户可以启用/禁用双因素认证和邮箱验证
  • 可以注入恶意代码——XSS漏洞可能窃取其他用户数据
  • 完全账户接管——攻击者可以修改账户的每个方面

预防措施

修复实际上很简单:服务器应该验证用户被允许更改的内容。需要做的是:

  1. 检查用户权限——普通用户不应能够将其角色改为"ADMIN"
  2. 正确验证输入——头像应该只是有效的图片URL,而不是随机代码
  3. 使用允许列表——只允许更改用户应该修改的特定字段

关键要点

这很好地提醒我们,有时最简单的漏洞可能产生最大的影响。该网站实施了复杂的安全措施,但在常见功能上错过了基本的授权检查。

对于开发人员:始终在服务器端验证用户被允许修改的内容。 对于安全研究人员:不要忽视基本的参数篡改——有时最明显的测试能产生最大的结果!

感谢阅读!如果你想联系我,可以在各种漏洞赏金平台和Telegram上找到我@ln0rag。

狩猎愉快!🐛

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