疑似Oday
# 鉴权绕过:
## 7.2.8
这个鉴权绕过和shiro的权限绕过类似
在sessionfilter这个类中的dofilterInternal⽅法中,默认dofilter参数是true,只有当其为false的时候,才能不被鉴权

跟到matches⽅法中,看这个代码他会匹配url和patterns中的134个路径字符串,当匹配成功的时候就会返回true,就可以使dofilter为true

然后⼀直调试直到循环可以进到判断当中,这时候pattern为/static.*?

1. 正则模式 /static.*? 的含义:
这是⼀个⾮贪婪模式的正则,匹配以 /static 开头,后⾯跟任意字符(包括 / 、 . 等) 的字
符串(.*? 表示匹配任意字符,⾮贪婪模式仅影响匹配⻓度,不影响是否匹配)。
2. 被匹配的字符串: /static/../je/saas/saasYh/getInfoById 该字符串明确以 /static 开头,后续内容包含 /../je/... ,符合 /static.*? 的匹配范围。
所以只要在任意后台⽬录路径前添加/static/..就可以绕过鉴权
其实这⾥这⾥不只是/static/..可以,在patterns中只要是单层路径且后⾯有.*?都可以绕过
举例:
~~~
/error/.*?
/adminseal.zz/.*?
/dwr/.*?
...
~~~
我没有都找出来,但是符合这个规则的都可以
## 7.2.9
在新版本7.2.9中多了⼀步检查url

跟如checkErrorUrl中,发现他会检查是否存在..

依旧结合shiro那⼏个cve绕过思路,将..进⾏⼀次url编码成功绕过
~~~
Payload:
POST /static/%2e%2e/je/sysConfig/sysConfig/loadSysVariables HTTP/1.1 1
~~~
泄露web端⽆加密密码

[4.0K] /data/pocs/3a7e1bec8037bc6182046603dc00db02a014b5b6
├── [184K] 0af02c638a240e10c6cf58e0401fff1.png
├── [1.0M] 0ca856ca5ab75e8c2477760b5bd29ad.png
├── [327K] 6d161b5ef76f64a0cb08b06d401fc51.png
├── [486K] 9ff82ec791a5dba616e8f90c13e1be8.png
├── [125K] bee0e69244a6fbeb482035cf1b3ea05.png
├── [149K] ee2dbea9184c7213e92bfb00cf25535.png
├── [4.0K] images
│ ├── [184K] 0af02c638a240e10c6cf58e0401fff1.png
│ ├── [1.0M] 0ca856ca5ab75e8c2477760b5bd29ad.png
│ ├── [327K] 6d161b5ef76f64a0cb08b06d401fc51.png
│ ├── [486K] 9ff82ec791a5dba616e8f90c13e1be8.png
│ ├── [125K] bee0e69244a6fbeb482035cf1b3ea05.png
│ ├── [149K] ee2dbea9184c7213e92bfb00cf25535.png
│ └── [ 5] test
└── [2.2K] README.md
1 directory, 14 files