1. 概念
权限提升漏洞是一种常见的安全漏洞,它允许攻击者利用系统或应用程序中的漏洞,获取原本不具有的更高权限,从而进行恶意行为。这种漏洞通常发生在用户输入、身份验证、访问控制等方面存在缺陷,导致攻击者能够绕过预期的权限限制,获取更多的系统资源或执行更高权限的操作。
2. 漏洞原理
访问控制是按用户身份及其所属的某项定义组来限制用户访问某些信息或功能的一种技术。在web应用程序的上下文中,访问控制依赖于身份验证和会话管理。
权限提升即失效的访问控制,失效的访问控制丧失了原有设定的约束。
3. 分类
3.1. 垂直越权
垂直越权是指用户可以访问他们不被允许访问的功能。例如,非管理员用户访问可以删除用户账户的管理页面。
垂直体现在用户获得了更高的权限,如普通用户获得了管理员权限。
3.2. 横向越权
横向越权指用户能够访问属于另外一个用户的资源。例如,如果一个员工能访问其他员工的就业和工资记录。
横向体现在获取到了别人的权限。
3.3. 横向到纵向越权
通过危害更高特权的用户,横向提权可以转变为纵向越权。例如,横向升级可能允许攻击者重置或捕获另一个用户的密码。如果攻击者以管理用户为目标并破坏其账户,则可以获得管理访问权限,从而执行垂直权限提升。
横向到纵向体现在以管理员为跳板。
4. 漏洞防御
可以通过纵深防御方法并应用以下原则来防止此类漏洞:
-
除非资源是公开访问,否则默认拒绝访问; -
在代码层面强制要求开发者声明每个资源允许的访问权限,默认拒绝访问; -
彻底审核和测试访问控制,确认它们按设计工作; -
实施强密码策略,定期更换密码,使用密码管理器等工具来提高密码的安全性。
权限提升漏洞是一种严重的安全风险,需要采取综合性的安全措施来减少其发生概率和影响范围。
5. 攻击案例
在这个实验环境中有一个用户登录页面,其中包含当前用户的现有密码,并在屏蔽输入中预先填充。接下来介绍如何从普通用户wiener横向越权到管理员administrator,并拿到管理员才有的用户管理功能。
5.1. 环境介绍
环境地址:https://portswigger.net/web-security/access-control/lab-user-id-controlled-by-request-parameter-with-password-disclosure
5.2. 攻击细节
1). 登录进入到用户界面,发现URL中存在id参数,此id表明了用户身份。
用户界面地址https://insecure-website.com/myaccount?id=wiener
2). 修改URL中的id为其他用户,如administrator,看是否可以进入其页面
在浏览器中输入修改后的URL:https://insecure-website.com/myaccount?id=administrator
注意到在密码预填充输入框填充了administrator的密码信息,点击查看页面元素可以看到administrator的明文密码
3). 使用获取到的密码登录管理员账户administrator
实现了从普通用户wiener横向越权到了管理员administrator,并拿到了管理员才有的用户管理功能。
原文始发于微信公众号(全栈安全):「 典型安全漏洞系列 」09.权限提升漏洞详解(共9/14期)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论