👋 大家好,安全极客们!
有时,最大的漏洞隐藏在最基本的功能中。最近,我在测试一个 Web 应用程序时偶然发现了一个严重的权限提升错误 — 这都是因为系统对用户输入的信任度有点高。
权限提升图示
🧐 发现
当我决定仔细查看其注册过程时,我正在随便测试一个 Web 应用程序。
报名表格
没什么花哨的 — 只有常用的字段:姓名、用户名、电子邮件、电话、密码和......一个字段。这立即引起了我的注意。Role
注册请求正文 (Burp)
{ "username":"attackerxx","name":"attackerxx","email":"attackerxx@gmail.com","phone":"87897165141","password":"C0b44tt4ck**","password":"C0b44tt4ck**","role":"User"}
大多数应用程序不允许用户在注册期间自行分配角色。服务器应自动将其设置为默认值,如 “User”。但是如果我能改变它呢?
我修改并转发了该请求。"role": "User"``"role": "Admin"
{ "username":"attackerxx","name":"attackerxx","email":"attackerxx@gmail.com","phone":"87897165141","password":"C0b44tt4ck**","password":"C0b44tt4ck**","role":"Admin"}
我检查了我新创建的帐户,登录了...是的 — 我是管理员!没有权限检查,没有审批流程,只有即时升级。我现在可以访问仅限管理员的管理功能,包括产品、订单、折扣、类别、用户帐户、产品取货请求。
管理员页面 (订单)
🚨 为什么会这样?
当角色分配依赖于用户输入而不是在服务器端强制执行时,就会发生这种漏洞。应用程序应忽略用户提供的任何角色参数,并根据预定义的逻辑安全地分配角色。服务器应忽略或清理请求中提供的任何字段。Role
我希望这篇文章能帮助开发人员和安全专业人员对类似问题保持警惕。保持安全,祝您狩猎愉快!🔎💻
其它相关课程
编辑
rust语言全栈开发视频教程-第一季(2025最新)
详细目录
mac/ios安全视频
QT开发底层原理与安全逆向视频教程
linux文件系统存储与文件过滤安全开发视频教程(2024最新)
linux高级usb安全开发与源码分析视频教程
linux程序设计与安全开发
- w
- w
- U
- 游
- i
- w
- 还
- windows恶意软件开发与对抗视频教程