当前位置: 首页 > news >正文

webgoat-Broken Access ControlI 访问控制失效

Insecure Direct Object References


直接对象引用
直接对象引用是指应用程序使用客户端提供的输入来访问数据和对象。

例子
使用 GET 方法的直接对象引用示例可能如下所示

https://some.company.tld/dor?id=12345

https://some.company.tld/images?img=12345

https://some.company.tld/dor/12345

其他方法
POST、PUT、DELETE 或其他方法也可能容易受到影响,主要仅在方法和潜在有效载荷上有所不同。

不安全的直接对象引用
当引用未得到正确处理时,这些被认为是不安全的,并允许授权绕过或披露可用于 执行用户不应能够执行或访问的操作或访问数据。 假设作为用户,您去查看您的个人资料,URL 如下所示:

https://some.company.tld/app/user/23398

…您可以在那里查看您的个人资料。如果导航到以下位置,会发生什么情况:

https://some.company.tld/app/user/23399…​或在末尾使用另一个数字。如果您可以操作数字(用户 ID)并查看他人的配置文件,则对象引用是不安全的。 当然,这可以检查或扩展到 GET 方法之外,以查看数据,也可以操作数据。

更多好读物
在我们继续练习之前,这里有一些关于不安全的直接对象引用的好读物:

https://www.owasp.org/index.php/Testing_for_Insecure_Direct_Object_References_(OTG-AUTHZ-004)

https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control

https://cheatsheetseries.owasp.org/cheatsheets/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet.html

https://www.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References

http://cwe.mitre.org/data/definitions/639.html

先进行身份验证,后滥用授权
许多访问控制问题容易受到经过身份验证但未经授权的用户的攻击

0x02
直接使用tom cat登录

0x03
页面上没显示的属性是role和userid


0x04
填写为WebGoat/IDOR/profile/2342384 提交,意思是直接使用userid就可以查询该id的信息。
如果知道了其他用户的id,那就也可以查询信息了。
在restful风格中,提供使用同样的url,不同的方法来进行处理,可以利用这样的模式,比如修改方法,传body,看能否对某些属性做出修改。

安全的對象引用
1、要有权限控制文档。
2、水平和垂直权限控制,通常我们使用角色来进行权限控制,但是同样角色的用户,也可能获取到其他用户的信息,这就是水平权限,也需要进行控制。
3、审计。权限控制规则应该包括哪些操作应该被记录下来,如超级用户或者管理员修改了其他人的信息,应该有日志记录。
另外试图破坏权限控制机制的操作也应该记录下来。
4、使用间接引用。这个的方法用的比较少,可以hash,编码或者其他的方法,使客户端看到的id不是真实的引用对象,
这会降低一些处理效率,但是也容易被猜测,暴力破解,或者反编译。
5、权限控制API 如 JSON Web Tokens (https://jwt.io和Secure Token Binding

Missing Function Level Access Control

缺少功能级别访问控制

访问控制(例如通过输出编码防止 XSS)可能很难维护。人们需要确保它在整个应用程序中正确执行,因此在每个方法/函数中。

IDOR 与缺少功能级访问控制

事实上,很多人(包括本课的作者)会将功能级访问控制和 IDOR 组合成“访问控制”。为了 OWASP Top 10 和这些教训,我们将做出区分。最明显的区别是 IDOR 更多的是“水平”或“横向”访问控制问题,而缺少功能级别访问控制会“暴露功能”。尽管此处的 IDOR 课程演示了如何公开功能(至少向具有相同角色的其他用户),但我们将研究可能公开功能的其他方式。

依靠默默无闻

人们可以依靠 HTML、CSS 或 JavaScript 来隐藏用户通常不访问的链接。过去曾出现过网络路由器尝试在 UI 中使用 javascript 保护(隐藏)管理功能的情况:Blogger: Time Warner Routers Still Hackable Despite Company Assurance | WIRED。

寻找隐藏物品

通常会有一些提示来查找 UI 未公开公开的功能......​

  • HTML 或 JavaScript 注释

  • 注释掉的元素

  • 通过 CSS 控件/类隐藏的项

0x02

在页面源码找到两个没有用到的链接

0x03

本题需要利用上一题找到的信息。

根据上一题的信息收集,我们得知了/users与/config链接,但是我直接访问localhost/WebGoat/users没有任何可用的信息,一开始以为是题目问题,知道看别人的解法,请求/users时把content-type改为application/json 得到hash值。

 

http://www.lryc.cn/news/220895.html

相关文章:

  • Beaustiful Soup爬虫案例
  • 【Redis】Redis与SSM整合Redis注解式缓存Redis解决缓存问题
  • 谈一谈SQLite、MySQL、PostgreSQL三大数据库
  • 【微软技术栈】C#.NET 中的本地化
  • 【qemu逃逸】华为云2021-qemu_zzz
  • vue递归获取树形菜单
  • [ubuntu]ubuntu22.04默认源和国内源
  • Map和ForEach的区别,For in和For of的区别
  • json字符串属性名与实体类字段名转换
  • Vue Vuex模块化编码
  • 消费者忠诚度研究:群狼调研帮您制定忠诚客户计划
  • 接口幂等性详解
  • Java操作redis常见类型数据存储
  • 【深度学习】pytorch——Autograd
  • 【ARM 安全系列介绍 1 -- 奇偶校验与海明码校验详细介绍】
  • 分享34个发布商会PPT,总有一款适合您
  • 047_第三代软件开发-日志分离
  • ChinaSoft 论坛巡礼 | 系统与网络安全论坛
  • Ubuntu Gitlab安javascript:void(‘numberedlist‘)装
  • 11.4-GPT4AllTools版本已开始对小部分GPT3.5用户内测推送
  • 竞赛选题 深度学习手势检测与识别算法 - opencv python
  • 语言模型AI——聊聊GPT使用情形与影响
  • 浅谈事件冒泡和事件捕获
  • CSS 背景、文本、字体
  • 爬取Elastic Stack采集的Nginx内容
  • python 机器学习 常用函数
  • 手写操作系统篇:环境配置
  • 地理信息系统原理-空间数据结构(7)
  • 三国志14信息查询小程序(历史武将信息一览)制作更新过程03-主要页面的设计
  • 学习Opencv(蝴蝶书/C++)相关——2.用clang++或g++命令行编译程序