背景介绍
作为一名安全研究员,国外白帽小哥Karthikeyan Nagaraj对漏洞赏金很感兴趣。
几年前,小哥看到了一篇“进入 NASA 名人堂”的帖子,从此能够进入NASA名人堂让他着迷。
从今年6月开始,小哥开始挖掘NASA漏洞,共发现4处漏洞:
- 2X个信息泄露漏洞 → 重复
- 2X个安全配置错误漏洞→ 2个被接受
案例1: 打破访问控制
漏洞概述
NASA FRC Grants 门户登录页面包含一个漏洞,允许用户通过客户端操作启用已禁用的“创建帐户”按钮,从而使未经授权的用户能够创建帐户并获得对系统的访问权限。
复现步骤
-
检查创建帐户按钮
-
右键单击“Create Account”按钮并选择“Inspect”或按 Ctrl+Shift+I 打开开发人员工具
-
找到与“Create Account”按钮对应的 HTML 元素,HTML元素类似如下:
<button class="btn btn-lg btn-outline-light btn-create w-100" id="createAccount" disabled="">Create Account</button>
- 从button元素中删除“disabled”属性,编辑后,如下:
<button class="btn btn-lg btn-outline-light btn-create w-100" id="createAccount">Create Account</button>
-
单击已启用的“Create Account”按钮
-
在注册页面上填写所需的详细信息
-
提交表格并检查电子邮件中的激活链接
-
单击激活链接激活帐户
-
登录门户,观察该帐户具有额外的用户功能并可以访问以前未授权访问的数据
漏洞修补
- 服务器端验证:
- 确保服务器检查请求的有效性和来源
- 验证服务器端的所有输入和操作,而不是仅仅依赖客户端控件
- 基于令牌的验证:
- 使用基于令牌的系统来验证帐户创建请求的合法性。例如,生成必须与帐户创建表单一起提交的 CSRF 令牌
- 重新启用适当的访问控制:
- 确保应限制的任何功能必须通过后端逻辑进行适当控制
- 确保前端状态(如 "disabled "属性)与服务器端检查一致
- 监控和警报:
- 实施监控以检测异常行为,例如创建帐户突然激增,这可能表明此类漏洞正在被利用
未完待续…
以上内容由骨哥翻译并整理。