Add files via upload

This commit is contained in:
雾島风起時
2025-09-25 03:24:57 +08:00
committed by GitHub
parent 770173d4a3
commit 6faa3b7354
28 changed files with 1149 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
### FastJSON 不出网利用方式
**1. 本地文件读写**
这是最常见的一种不出网利用方式。FastJson 的反序列化漏洞可以被利用来调用一些特定的类,这些类能够处理文件操作。
- **本地文件读取**: 我们可以利用 `com.sun.rowset.JdbcRowSetImpl` 类,在 `dataSourceName` 属性中构造一个特殊的 JNDI 字符串,例如 `rmi://localhost:1099/Evil`。在无法出网的情况下,这个 RMI 请求会失败,但如果我们将利用链和本地文件操作相结合,比如通过加载一些可以处理本地文件路径的类,理论上可以实现本地文件读取。一个更直接且知名的利用方式是利用 `javax.imageio.ImageIO` 类,通过 `read()` 方法加载一个恶意的 TIFF 或 GIF 文件,如果这个文件包含了特殊的 Payload,就能触发进一步的利用
- **本地文件写入**: 我们可以利用一些可以写文件的类,例如通过加载一些可以处理文件路径的类,并结合一些 **gadget** 链来构造一个可以写入文件的 Payload。这需要我们对 FastJson 的 Gadget 链有深入的理解,并找到合适的类来完成文件写入操作
**2. 命令执行**
如果能找到一个可以触发本地命令执行的 Gadget 链,那么即使不出网也能直接在目标服务器上执行命令
**`com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl`**: 这是 FastJson 漏洞利用中最经典的 Gadget 之一。通过控制 `_bytecodes` 字段,我们可以加载一个恶意的 Java 类。这个类在被加载和实例化时,可以在其静态代码块或者构造函数中执行本地命令,例如 `Runtime.getRuntime().exec("command")`
**`org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor`** 等其他 Gadget: 除了 `TemplatesImpl`,还有很多其他的 Gadget 链可以被利用来触发命令执行。这些 Gadget 链通常涉及到不同的库和类,但其核心思想都是通过反序列化加载一个恶意类,并在该类中执行命令
**3. 内存马注入**
这是一种更高级的无文件攻击方式
- **动态注入**: 我们可以利用 FastJson 的反序列化漏洞,通过一些特殊的 Gadget 链,在内存中动态地注入一个 **Webshell**。这个 Webshell 不会以文件的形式存在于磁盘上,而是直接运行在内存中。攻击者可以通过访问特定的 URL 或者发送特定的请求来与这个内存马进行交互,从而实现命令执行、文件管理等操作。这种方式由于没有落地文件,可以有效规避基于文件哈希或特征的检测