现在是综合应用,来看看横向到纵向的权限提升。
通常情况下,横向权限提升攻击可以变成纵向权限提升,通过危害更高权限的用户。例如,水平升级可能允许攻击者重置或捕获属于另一个用户的密码。如果攻击者以管理用户为目标并破坏了他们的帐户,那么他们可以获得管理访问权限,从而执行垂直权限升级。
在这里补充一下IDOR的概念
不安全的直接对象引用 (IDOR) 是一种访问控制漏洞,当应用程序使用用户提供的输入直接访问对象时会出现这种漏洞。
具体来说,有以下几个场景
1.引用数据库参数进行索引。例如,https://insecure-website.com/customer_account?customer_number=132355,这样的一个链接,可以通过参数的修改进行水平越权,但是一旦在水平越权的过程中,获取到具有权限的用户,或者敏感信息泄露,就可能造成更加严重的垂直越权。在这里基于参数的引用就是不安全的。
2.直接引用静态文件的 IDOR 漏洞
常规登录后捕获到请求个人界面时,是通过参数进行索引。
更换参数进行验证,可以看出是水平越权。
水平越权的同时,发现具有修改密码的功能,在修改之前,就会泄露以前的密码。
(这里就是在Update password 那个input框里,查看源码就可以看到是 gwfroce…)
使用获取到的密码登录管理员账户。(cookie就变了)
此时,就从水平越权更进一步完成了垂直越权,可以使用管理员功能了。
这里是由于不安全的静态文件放置造成的,首先使用普通用户登录。
登录后有一个类似聊天的功能,下面两个按钮分别可以进行发送操作和下载聊天历史的操作。
捕获"view transcript"传出的数据包
可以看到链接上明显有一个2.txt 同时在浏览器上下载了聊天历史。
这里有明显的数字特征,可以进行fuzz,不过在这里很容易猜,2.txt是我们自己的,1.txt或者3.txt就很有可能有东西。
下面查看1.txt
敏感信息泄露
You: Ok so my password is q3w895g2ztg269i52574. Is that right?
实验室条件告诉了我们用户,登录上去。
又从水平越权转变到了垂直越权。
这个是多步骤流程中的访问控制漏洞
例如,更新用户详细信息的管理功能可能涉及以下步骤:
1.加载包含特定用户详细信息的表单。
2.提交更改。
3.查看更改并确认。
有时,网站会对其中一些步骤实施严格的访问控制,而忽略其他步骤。例如,假设访问控制正确应用于第一步和第二步,但没有应用于第三步。实际上,网站假设用户只有在已经完成了正确控制的第一步后才能到达第 3 步。在这里,攻击者可以通过跳过前两个步骤并直接提交带有所需参数的第三步请求来获得对该功能的未经授权的访问。
在这个场景下就是,管理员在修改普通用户权限时,会发出表单和确认的包,但是在验证后,就默认安全了,最后完成提交时就产生了漏洞。
这里捕获最后一个包:
接下来使用无痕模式,使用普通用户登录。取出普通用户的cookie
再次发出这个敏感请求,修改cookie和权限升级对象。可以看到,仍然完成了这个post请求。
在这个场景下,就出现了特殊的垂直越权,可以使用部分管理员的功能。
但是适用条件也比较苛刻。
这里题目提示的非常明显了,是通过refer来进行权限控制的。
使用管理员权限,能够正常发出请求。
修改refer发现不能再重放了,可以看到是通过refer来进行权限控制的。
使用普通用户来做这个敏感操作,取出他的cookie
同样可以发出这个请求,换好refer,就可以实现越权了。
一些网站根据用户的地理位置对资源实施访问控制。例如,这可以适用于适用州立法或业务限制的银行应用程序或媒体服务。这些访问控制通常可以通过使用网络代理、VPN 或操纵客户端地理定位机制来规避。
访问控制漏洞通常可以通过采取深度防御方法并应用以下原则来预防:
1.永远不要仅仅依靠混淆来进行访问控制。
2.除非资源旨在公开访问,否则默认拒绝访问。
3.尽可能使用单一的应用程序范围的机制来实施访问控制。
4.在代码级别,强制开发人员声明每个资源允许的访问权限,并默认拒绝访问。
5.彻底审核和测试访问控制,以确保它们按设计工作。
访问控制安全模型是一组独立于技术或实现平台的访问控制规则的正式定义的定义。访问控制安全模型在操作系统、网络、数据库管理系统和后台、应用程序和 Web 服务器软件中实施。多年来,人们设计了各种访问控制安全模型,以将访问控制策略与业务或组织规则以及技术变化相匹配。
1.程序访问控制
使用编程访问控制,用户权限矩阵存储在数据库或类似的数据库中,并且访问控制参考该矩阵以编程方式应用。这种访问控制方法可以包括角色或组或个人用户、流程的集合或工作流,并且可以是高度精细的。
2.自主访问控制 (DAC)
通过自主访问控制,对资源或功能的访问受到用户或指定用户组的限制。资源或功能的所有者能够向用户分配或委派访问权限。该模型具有高度精细的访问权限,为单个资源或功能和用户定义了访问权限。因此,模型的设计和管理会变得非常复杂。
3.强制访问控制 (MAC)
强制访问控制是一种集中控制的访问控制系统,其中主体对某些对象(文件或其他资源)的访问受到限制。值得注意的是,与 DAC 不同,资源的用户和所有者没有能力委派或修改其资源的访问权限。该模型通常与基于军事许可的系统相关联。
4.基于角色的访问控制 (RBAC)
使用基于角色的访问控制,可以定义命名角色,并为其分配访问权限。然后将用户分配给单个或多个角色。RBAC 提供了对其他访问控制模型的增强管理,如果设计得当,则可以提供足够的粒度以在复杂的应用程序中提供可管理的访问控制。例如,采购员可能被定义为对采购分类帐功能和资源的子集具有访问权限的角色。随着员工离开或加入组织,访问控制管理被简化为定义或撤销采购员角色的成员资格。
当有足够多的角色可以正确调用访问控制但又不足以使模型过于复杂和难以管理时,RBAC 是最有效的。
访问控制,除了普通的水平越权,垂直越权之外,还有综合起来造成更大的漏洞危害。从水平越权,信息泄露最后到垂直越权,涉及范围和影响范围都比较大。
上述的解决方案大多还是手动测试,而在bp上也有很多自动化检测越权漏洞的插件(比如Authz等等),算是之后深入学习越权漏洞的一个方向,可以参考参考。