文件读取 / 数据外带 · 适用 Payload:
FakeMySQLReadPayload· 最终效果:文件读取 / 数据外带
-
利用场景 / 触发入口:
FakeMySQLReadPayload。 -
受影响依赖与版本:未在注解中声明额外第三方依赖,详见各 gadget 条目。
-
Gadget 组成(配置顺序,由外到内):
FakeMySQLReadFile。
FakeMySQLReadFile 是 FakeMySQL 读文件入口,链输出目标文件路径,后续由 FakeMySQL 协议处理模块完成读取交互。
| 顺序(外->内) | Gadget | 类别 | 在本链中的角色 |
|---|---|---|---|
| 1 | FakeMySQLReadFile | mysql | 最外层入口;FakeMySQL 读取文件 |
-
Payload 入口按
chains.json中的steps解析 gadget,并按 java-chains 约定由内向外调用chain.doCreate(context)构建对象。 -
最内层
FakeMySQLReadFile先产出链尾数据;随后每一层根据nextTags与上下文标签继续包装。 -
最外层
FakeMySQLReadFile生成交给 Payload 序列化或投递的对象。目标端触发后,调用路径再从外向内推进。 -
本链关键路径:
FakeMySQLReadFile是 FakeMySQL 读文件入口,链输出目标文件路径,后续由 FakeMySQL 协议处理模块完成读取交互。
- 标签:tags=
FakeMySQLRead、END;nextTags=无
public Object invoke(GadgetContext context, GadgetChain chain) throws Exception {
return this.targetFilePath;
}在本链中,FakeMySQLReadFile 的职责是:最外层入口;FakeMySQL 读取文件。它的返回值由相邻层根据标签继续消费;如果源码中写入了 ContextTag,这些上下文值会影响下一层的类名、getter 名、驱动类名或序列化后处理。
FakeMySQLReadPayload
-> FakeMySQLReadFile.invoke/getObject
-> 文件读取 / 数据外带
| Gadget | 字段 | 名称 | 说明 | 默认/可选 |
|---|---|---|---|---|
| FakeMySQLReadFile | targetFilePath | 读取的文件路径 | eg: /etc/passwd | "/etc/passwd" |
-
对不可信反序列化、JNDI Reference、JDBC URL、Spring XML 加载等入口实施白名单;不要只依赖单个黑名单类名。
-
检测对象图或配置中连续出现本链类名:
FakeMySQLReadFile。 -
关注上下文相关副作用:
ContextTag.DRIVER_CLASS_NAME_KEY、GETTER_PARAM_NAME_KEY、SUID_REPLACE、CACHE_FILES_MAP等值会改变后续触发点。 -
对应用服务器出站连接、异常 DNS/HTTP/JDBC 请求、动态类定义与
ProcessBuilder子进程做审计。
-
机器可读定义:
index/chains.json(id=51)。 -
原始链配置:
index/default-chains.yaml。 -
关联 gadget 条目见上方组成表。