使用Autorize工具挖掘访问控制漏洞
在OWASP Top 10最新修订中,失效的访问控制从第五位跃升至第一位。OWASP将访问控制定义为“强制执行策略,使用户不能在其预期权限之外进行操作”。因此,当我们在Web应用中发现自己能以当前权限执行本不允许的操作时,就发现了访问控制漏洞。这类漏洞不仅常见,且一旦被利用往往造成高影响。
访问控制漏洞主要表现为两种类型:垂直访问控制漏洞和水平访问控制漏洞。垂直漏洞发生在应用存在不同权限级别但未正确执行跨级别访问控制时,例如普通用户能执行管理员操作。水平漏洞则发生在用户权限相同但应限制访问范围时,例如患者能查看其他患者的医疗数据。
环境配置
为了同时从多个认证上下文与目标应用交互,需要同时用不同用户账户登录应用。推荐使用Firefox的–no-remote
和–p
参数启动多个实例,并创建两个测试配置文件(如“Primary”和“Secondary”)。这些配置文件应配置有用扩展、UI修改及静音背景噪声的设置。
配置完成后,通过Burp Suite代理请求,并安装Autorize扩展。Autorize支持Burp免费社区版,但需先下载配置Jython独立JAR文件。
实战演示
以OWASP故意漏洞应用Juice Shop为例,启动测试主机上的实例,并在两个浏览器中访问。首先用管理员凭证登录(admin@juice-sh.op / admin123),观察应用响应。Juice Shop未设置cookie,但返回了包含JWT令牌的JSON内容。
通过上传个人资料图片等特权操作,确认JWT用于会话管理。在Burp Repeater中逐步移除cookie,确定仅需JWT令牌即可成功请求。
使用Autorize测试
用低权限账户(mc.safesearch@juice-sh.op / Mr. N00dles)登录第二个浏览器,将其JWT粘贴到Autorize配置界面并启用。随后用高权限账户浏览应用,Autorize会对每个请求生成两个附加请求(低权限和无认证上下文),并比较响应结果。
Autorize结果分为三类:
- Enforced!:访问控制已正确执行。
- Bypassed!:访问控制未正确执行。
- Is Enforced???:响应不同但不确定是否执行控制。
需手动审查结果,因为请求上下文和响应内容决定访问控制是否应用。例如:
- 产品API的GET请求允许未认证用户访问,但这是预期行为,非漏洞。
- “whoami” API请求响应因认证上下文而异,但内容合理,非漏洞。
- 添加商品到购物车的POST请求访问控制正确执行。
- 查看高权限用户购物车内容的请求中,低权限和未认证请求也返回了高权限数据,暴露IDOR漏洞。
进一步调查发现,购物车通过URL末尾数字索引,修改该值可访问不同用户购物车,证实存在不安全的直接对象引用(IDOR)漏洞。
结论
访问控制漏洞的广泛存在和潜在影响要求我们在Web应用渗透测试中特别关注。Autorize工具能有效帮助识别这类漏洞,但需结合手动分析确认结果。