高防服务器

OWASP TOP 10初学笔记——Broken Access Control失效的访问控制

    河马有话说:去年第一次接触安全,粗略的跟着视频练习了DVWA。经过几个月的不接触,回头再看填鸭式的学习,好像真的不是很有用处( •̀ ω •́ )y。新的平台,希望是一个新的开始,从哪里跌倒就从哪里爬起来,希望亡羊补牢为时未晚……(春招加油!)
     对于web应用安全,OWASP公司公布的10种最严重、最常见的web应用漏洞也就是我们常听到的OWASP TOP 10。
     今天学习2021 OWASP榜单第一名的Broken Access Control。相较于上一次发布(2017),他的排名从第五位上升到了第一位(还记得当时学习第一名是注入),具体原因我还没有查到相关资料(啊喂简单说就是和社会脱节了),查到后做补充,还是蛮好奇的。
    首先还是要了解,是什么?单从字面来说就很好理解,没有被授权过的信息会被泄露、修改或者破坏。就比如说张三是一个普通学生用户,但是他发现了某些漏洞登录学校教务管理系统以管理员的权限将自己的成绩修改,这就属于Broken Access Control了,当然这只是其中一种。
     常见的例子?

  • 违反最小权限原则或默认拒绝,其中访问权限仅授予特定功能、角色或用户,但可供任何人使用。
  • 通过修改 URL(参数篡改或强制浏览)、内部应用程序状态或 HTML 页面,或使用攻击工具修改 API 请求来绕过访问控制检查。
  • 通过提供其唯一标识符(不安全的直接对象引用)来允许查看或编辑其他人的帐户
  • 访问 API 时缺少对 POST、PUT 和 DELETE 的访问控制。
  • 特权提升(垂直越权)。以用户身份而不登录或以用户身份登录时充当管理员。
  • 元数据操作,例如重放或篡改 JSON Web 令牌 (JWT) 访问控制令牌,或用于提升权限或滥用 JWT 失效的 cookie 或隐藏字段。
  • CORS 错误配置允许来自未经授权/不受信任的来源的 API 访问。
  • 强制以未经身份验证的用户身份浏览经过身份验证的页面或以标准用户身份浏览特权页面。

eg:

  • 未经身份验证的用户可以访问任一页面,访问者可以构造相对路径,读取文件内容(目录遍历)

     https://example.com/app/getappInfo  https://example.com/app/admin_getappInfo
  • 应用程序在访问帐户信息的 SQL 调用中使用未经验证的数据:

     pstmt.setString(1, request.getParameter("acct"));  ResultSet results = pstmt.executeQuery( );

    攻击者只需修改浏览器的“acct”参数即可发送他们想要的任何帐号。如果没有正确验证,攻击者可以访问任何用户的帐户。

     https://example.com/app/accountInfo?acct=notmyacct
  • 不安全的对象直接引用(IDOR)
     修改url中参数值来直接访问目标对象

防护

  • 除公共资源外,默认拒绝。
  • 实施一次访问控制机制并在整个应用程序中重复使用它们,包括最大限度地减少跨源资源共享 (CORS) 的使用。
  • 模型访问控制应该强制记录所有权,而不是接受用户可以创建、读取、更新或删除任何记录。
  • 独特的应用程序业务限制要求应由领域模型强制执行。
  • 禁用 Web 服务器目录列表并确保文件元数据(例如 .git)和备份文件不在 Web 根目录中。
  • 记录访问控制失败,在适当时提醒管理员(例如,重复失败)。
  • 速率限制 API 和控制器访问,以最大限度地减少自动攻击工具的危害。
  • 注销后,服务器上的有状态会话标识符应失效。无状态 JWT 令牌应该是短暂的,以便最大限度地减少攻击者的机会窗口。对于寿命较长的 JWT,强烈建议遵循 OAuth 标准来撤销访问。

[温馨提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。]

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]