技术社区
安全培训
技术社群
积分商城
先知平台
漏洞库
历史记录
清空历史记录
相关的动态
相关的文章
相关的用户
相关的圈子
相关的话题
注册
登录
从系统安全防护赛JDBCParty 学习高版本JDK和高版本Tomcat打JNDI到RCE
J1rrY
历史精选
346浏览 · 2025-02-15 09:31
返回文档
之前有佬在群里发了如何反序列化触发到JNDI
这里重新学习整理一下整个流程
看看高版本jdk和高版本tomcat如何触发到RCE
考点:高版本JDK反序列化+高版本JNDI打法
JDK17+反射限制绕过
参考:
https://pankas.top/2023/12/05/jdk17-%E5%8F%8D%E5%B0%84%E9%99%90%E5%88%B6%E7%BB%95%E8%BF%87/
这位师傅说的非常详细了
本质上就是 在jdk17及之后无法反射
java.*
包下非
public
修饰的属性和方法 通过
UnSafe
实现
调用类的module和Object类的module一样
达到可以修改的目的
如何找到触发getter的JNDI
实际上就是这个项目
Deserial_Sink_With_JDBC
https://github.com/luelueking/Deserial_Sink_With_JDBC
图片加载失败
为什么只能打RMI
图片加载失败
做了
validateJNDIName
黑名单限制
图片加载失败
只可以打RMI远程方法调用
触发到JNDI的POC
这里
toString
链是 2024 阿里云CTF chain17官方WP中的
toString
通杀链
需要注意对
BaseJsonNode
要去除其
writeReplace
方法
建议本地实现包覆盖
图片加载失败
poc类
UnSafeTools类
高版本JNDI打法
建议参考 浅蓝师傅的文章(经典好文~)
探索高版本 JDK 下 JNDI 漏洞的利用方法
tomcat高版本限制
值得注意的是这里 Spring-boot内置版本是tomcat
10.1.31
图片加载失败
Tomcat 在
9.0.62
后在
BeanFactory
里对
forceString
进行了判断
直接打
BeanFactory
的老路已经行不通了 什么EL和SnakeYaml都打不了
建议参考
高版本JNDI注入-高版本Tomcat利用方案
但是这道题实现不了Sink点 需要重新找Sink点
图片加载失败
XXE
浅蓝师傅的文章中有通过
org.apache.catalina.users.MemoryUserDatabaseFactory
打本地工厂类实现XXE 考虑可以通过XXE盲注实现
任意文件读取
原文没有具体代码这里贴一下 RMI 恶意服务端
XXE盲注Payload
xxe.xml
test.dtd
这里是Windows环境 可以触发XXE但是
没有实现任意文件读取
可能是Windows环境原因???
有空Linux试试 但是又要改POC太麻烦了 留个坑
利用CVE-2022-39197实现RCE
群里有佬提了一句 就自己探索一下
参考:
CobaltStrike RCE漏洞分析
细心一点可以发现存在第三方依赖 batik-swing
图片加载失败
结合文章进行相应修改和应用
会发现Sink点是
JSVGCanvas#setURL
可以svg2RCE
图片加载失败
高版本Tomcat实现触发任意类setter
之前我们说过 tomcat高版本 虽然对
toString
做了限制
但是可以通过
JavaBeans Introspector
实现获取任意类的bean之后就可以调用任意类的的setter方法 而且可以实现
任意传参
所以我们可以通过
BeanFactory
实现
调用任意setter方法并且传参
获取JavaBean的
WriteMethod
也就是所有
setter
方法
图片加载失败
通过反射实现调用
图片加载失败
图片加载失败
直接触发到
JSVGCanvas#setURL
图片加载失败
至于这里为什svg要这样写
这个是一个间隔了20年的漏洞直接拿来用就是了(可以自己研究一下)
calc.svg
图片加载失败
触发到
org.apache.batik.bridge.BaseScriptingEnvironment#loadScript
实现远程类加载
一种是实现
EventListenerInitializer
类,
MANIFEST.MF
指定
SVG-Handler-Class
。
一种是实现
ScriptHandler
类,
MANIFEST.MF
指定
Script-Handler
这里以 文章中提到的
EventListenerInitializer
为例子
图片加载失败
可以实现远程类加载实例化并且执行
initializeEventListeners
方法意味着可以执行任意命令
编写exp.jar
注意这里用的是 batik-ext-1.5.jar 远古版本 这里贴一下下载链接
http://www.java2s.com/Code/Jar/b/Downloadbatikext15jar.htm
导入lib库后
图片加载失败
实现
initializeEventListeners
方法
exp.jar
手动加上
META-INF/MANIFEST.MF
后打包为jar
图片加载失败
图片加载失败
一定一定注意 exp.jar放在其他端口
同一端口不行
(什么鬼bug)
图片加载失败
2
人收藏
1
人喜欢
转载
分享
0
条评论
某人
表情
可输入
255
字
评论
没有评论
发布投稿
热门文章
1
飞塔防火墙漏洞深度利用及调试环境搭建
2
Linux Shellcode开发(Stager & Reverse Shell)
3
Windows Shellcode开发(x64 stager)
4
Fuzz挖掘sudo提权漏洞:一次堆溢出如何逆向分析出提权思路
5
1.6K主机全域沦陷实录:从单点突破到域控接管的终极横向渗透链
近期热点
一周
月份
季度
1
飞塔防火墙漏洞深度利用及调试环境搭建
2
Linux Shellcode开发(Stager & Reverse Shell)
3
Windows Shellcode开发(x64 stager)
4
Fuzz挖掘sudo提权漏洞:一次堆溢出如何逆向分析出提权思路
5
1.6K主机全域沦陷实录:从单点突破到域控接管的终极横向渗透链
暂无相关信息
暂无相关信息
优秀作者
1
一天
贡献值:18800
2
T0daySeeker
贡献值:18700
3
1174735059082055
贡献值:15000
4
Yale
贡献值:14000
5
1674701160110592
贡献值:13000
6
LeeH
贡献值:10000
7
MeteorKai
贡献值:9000
8
熊猫正正
贡献值:8000
9
lufei
贡献值:8000
10
Bu0uCat
贡献值:8000
目录
JDK17+反射限制绕过
如何找到触发getter的JNDI
为什么只能打RMI
触发到JNDI的POC
poc类
UnSafeTools类
高版本JNDI打法
tomcat高版本限制
XXE
利用CVE-2022-39197实现RCE
高版本Tomcat实现触发任意类setter
编写exp.jar
转载
标题
作者:
你好
http://www.a.com/asdsabdas
文章
转载
自
复制到剪贴板
没有评论