webgoat-Broken Access ControlI 访问控制失效

news/2024/7/3 2:15:00

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缺少功能级别访问控制

在整个应用,方法/功能都需要做权限控制。

IDOR 与缺少功能级访问控制

很多人会将功能级访问控制和 IDOR (即不安全的直接对象引用)组合成“Access control”。但是这两者是有区别的。

最明显的区别是 IDOR 更多的是“水平”或“横向”访问控制问题,而缺少功能级别访问控制会“expose functionality”。尽管此处的 IDOR 课程演示了如何公开功能(至少向具有相同角色的其他用户),但我们将研究可能公开功能的其他方式。

Relying on obscurity

可以使用 HTML, CSS, or javascript 隐藏用户一般用不到的链接. 在过去,一个网络路由视图使用js在UI中隐藏管理员相关功能。Blogger: Time Warner Routers Still Hackable Despite Company Assurance | WIRED.

找到隐藏内容

There are usually hints to finding functionality the UI does not openly expose in:

  • HTML or javascript comments

  • Commented out elements

  • Items hidden via CSS controls/classes

作业0x02

在下面的菜单中找到攻击者/恶意用户感兴趣的两个不可见菜单项,并提交这些菜单项的标签(菜单中目前没有链接)

查看html页面,可以看到还有一个被隐藏的菜单,下面有三个li标签,每个标签有一个href。

这些href如果没有做权限控制,就可能被攻击者利用。

收集用户信息

利用权限控制漏洞,可以获取用户信息。

Often data dumps originate from vulnerabilities such as SQL injection, but they can also come from poor or lacking access control.

It will likely take multiple steps and multiple attempts to get this one:

  • Pay attention to the comments and leaked info.

  • You’ll need to do some guessing too.

  • You may need to use another browser/account along the way.

作业0x03

本题要求根据收集到的隐藏信息,找到user列表,并找到某个用户的hash值。

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

作业0x04

要求对第二题找到的链接/WebGoat/access-control/users-admin-fix,根据这个链接,获取jerry的hash。

参考:A1-Missing Function Level Access Control - 知乎 (zhihu.com) 

1、 GET方法访问这个链接,提示403,权限不够,只有admin可以访问

2、在源码里,针对这个链接还有一个post方法,可以用来设置用户的角色。

用post方法请求,将当前自己的账号设置为admin

3、然后GET方法请求

 

这个题的bug之处在于如果没有源码,不知道可以设置角色,那就解不出来了。 

总结:对于url,method,function都要做access control,不要试图通过hide信息让用户无法访问,一旦这些信息泄露,被攻击者发现,就over了。 


http://lihuaxi.xjx100.cn/news/1761454.html

相关文章

2023.11.6 Spring 使用注解存储 Bean 对象

目录 前置工作 使用类注解 五大类注解 Controller(控制器) Service(服务) Repository(仓库) Component(组件) Configuration(配置) 使用方法注解 B…

种子公司展示预约小程序的作用如何

蔬菜水果育苗种子,各种农作物是生活所需,各地的种子公司或经销商往往有很高需求度,无论产品还是服务/知识往往需要的用户很多,但在实际经营中,商家也还是会面对一些痛点: 1、品牌传播产品展示难 种子经销…

SLAM从入门到精通(车道线检测)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于slam而言,大家一般想到的就是去通过传感器找特征点,进而借助于特征点去定位机器人的位置。但是对于用户或者厂家来说&a…

什么是微服务?与分布式又有什么区别?

什么是微服务,我们先从传统的单体结构进行了解,对两者进行对比。 单体结构 单体结构是一种传统的软件架构模式,它将应用程序划分为一组相互依赖的模块和组件。这些模块和组件通常都是构建在同一个平台上的,并且紧密耦合在一起。…

通信原理板块——基础知识系列目录索引

目录索引,顾名思义,为了方便读者对此系列文章进行回顾与复习。 具体操作方式,读者可根据文章内容目录,进行针对性的知识回顾与学习,微信复制并打开对应文章的索引链接,跳转至对应文章的详细内容。 本节目录…

【广州华锐互动】影视制作VR在线学习:身临其境,提高学习效率

随着科技的不断发展,影视后期制作技术也在日新月异。然而,传统的教学方式往往难以满足学员的学习需求,无法充分展现影视后期制作的魅力和潜力。近年来,虚拟现实(VR)技术的崛起为教学领域带来了新的机遇。通过VR教学课件&#xff0…

python爬虫怎么翻页 ?

首先,你需要安装相关的库。在你的命令行窗口中,输入以下命令来安装所需的库: pip install requests beautifulsoup4然后,你可以使用以下代码来爬取网页内容并翻页: package mainimport ("fmt""net/htt…

CountDownTimer倒计时使用

CountDownTimer倒计时使用 CountDownTimer使用 CountDownTimer 代码片. // An highlighted blockprivate MyCountDownTimer timer;private final long TIME 7 * 1000L;private final long INTERVAL 1000L;private class MyCountDownTimer extends CountDownTimer{/*** p…