By. Whoopsunix
🚀 记录贴 对照实战场景梳理较通用的 Java Rce 相关漏洞的利用方式或知识点
🚩 对于实际环境遇到过的组件如有必要会针对可利用版本进行一个梳理 详情见代码
🚧 长期项目 不定期学习后更新......
- 0x01 命令执行
- 执行Demo,java jsp
- 执行结果输出(InputStream 处理Demo)
- 0x02 表达式注入
- 0x03 JDBC Attack
- 0x04 Serialization
- 0x05 MemShell
- 鸣谢
目前涵盖:命令执行及输出、表达式及输出、JDBC
0x01 Command
参考 javaweb-sec 有很详细的例子
- Runtime
- ProcessBuilder
- ProcessImpl
- ProcessImpl & UnixProcess
- ProcessImpl & UnixProcess by unsafe + Native
- Thread
- ScriptEngineManager
- jni
- java.lang.StringBuilder
- java.io.ByteArrayOutputStream
- java.util.Scanner
- java.io.BufferedReader
- java.io.InputStream.readNBytes > JDK 9
- org.springframework:spring-core
- org.apache.commons:commons-io
0x02 Expression inject
- 普通执行demo、jsEngine:get、set方式
- 有sout的回显 (Ps. 通过 Servlet 的回显移到 RceEcho 章节介绍)
- 明文
- 套一层base64加密
- 探测用Payload
- DNSLOG、HTTPLOG
- 延时
- runtime 回显
- jsEngine 回显
- Scriptlet 标记写法(放在这里对照)
- runtime 回显
- 探测用Payload
- DNSLOG、HTTPLOG
- 延时
0x03 JDBC Attack
参考 JDBC-Attack 有很详细的例子
- 文件读取
- 反序列化
- statementInterceptors
- detectCustomCollations
- CVE-2022-21724 RCE
- AbstractXmlApplicationContext 实现类
- 文件写入
- loggerLevel / loggerFile
- 原始方式写入 EL
- 截断方式写入 jsp
- loggerLevel / loggerFile
- RUNSCRIPT 远程sql加载
- 代码执行
- INIT转义分号
- TriggerJS
- Groovy
- JNDI
- JNDI
- Serialize
- RCE
0x04 Serialization
- static 触发
- 构造方法触发
- 方法触发
- static 触发
- 构造方法触发
- 方法触发
- 命令执行 Runtime、ProcessBuilder、js
- 探测用Payload
- DNSLOG、SOCKETLOG
- 延时
- JNDI
- BCEL
- RemoteJar
主要为 CVE 不具体展开
0x05 MemShell
感谢师傅们的研究 带来了很大的帮助 :)
https://github.com/javaweb-sec/javaweb-sec
https://github.com/yzddmr6/Java-Js-Engine-Payloads
https://github.com/su18/JDBC-Attack