👋 大家好,安全极客们!
有时,最大的漏洞隐藏在最基本的功能中。最近,我在测试一个 Web 应用程序时偶然发现了一个严重的权限提升错误 — 这都是因为系统对用户输入的信任度有点高。
🧐 发现
当我决定仔细查看其注册过程时,我正在随便测试一个 Web 应用程序。
没什么花哨的 — 只有常用的字段:姓名、用户名、电子邮件、电话、密码和......一个字段。这立即引起了我的注意。Role
{"username":"attackerxx","name":"attackerxx","email":"[email protected]","phone":"87897165141","password":"C0b44tt4ck**","password":"C0b44tt4ck**","role":"User"}
大多数应用程序不允许用户在注册期间自行分配角色。服务器应自动将其设置为默认值,如 “User”。但是如果我能改变它呢?
我修改并转发了该请求。"role": "User"
"role": "Admin"
{"username":"attackerxx","name":"attackerxx","email":"[email protected]","phone":"87897165141","password":"C0b44tt4ck**","password":"C0b44tt4ck**","role":"Admin"}
我检查了我新创建的帐户,登录了...是的 — 我是管理员!没有权限检查,没有审批流程,只有即时升级。我现在可以访问仅限管理员的管理功能,包括产品、订单、折扣、类别、用户帐户、产品取货请求。
🚨 为什么会这样?
当角色分配依赖于用户输入而不是在服务器端强制执行时,就会发生这种漏洞。应用程序应忽略用户提供的任何角色参数,并根据预定义的逻辑安全地分配角色。服务器应忽略或清理请求中提供的任何字段。Role
我希望这篇文章能帮助开发人员和安全专业人员对类似问题保持警惕。保持安全,祝您狩猎愉快!🔎💻
原文始发于微信公众号(安全狗的自我修养):通过注册功能记录进行权限提升
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论