From a6e0f8cc3a63622b768c3b46297c66dc8a0a85f0 Mon Sep 17 00:00:00 2001 From: Y4tacker <56486273+Y4tacker@users.noreply.github.com> Date: Mon, 10 Nov 2025 19:47:01 +0800 Subject: [PATCH 1/4] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add No-FTP:高版本JDK如何通过XXE-OOB读取多行文件(WIndows) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 87f4e22..7b814d6 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ - [Java中的XXE](https://github.com/Y4tacker/JavaSec/blob/main/1.%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/Java%E4%B8%AD%E7%9A%84XXE/index.md) - [XML 相关漏洞风险研究(关于XML结构方面的介绍可以看看这篇文章,浅显易懂)](https://evilpan.com/2024/06/02/xml-vulnerabilities/) - [XML外部实体注入(XXE)攻击方式汇总(关于XXE可以延伸继续看看)](https://tttang.com/archive/1813/) + - [No-FTP:高版本JDK如何通过XXE-OOB读取多行文件(Windows)](https://y4tacker.github.io/2025/11/10/year/2025/11/No-FTP-%E9%AB%98%E7%89%88%E6%9C%ACJDK%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87XXE-OOB%E8%AF%BB%E5%8F%96%E5%A4%9A%E8%A1%8C%E6%96%87%E4%BB%B6/) - [绕过WAF保护的XXE(一些通用的流量混淆方式)](https://xz.aliyun.com/t/4059?accounttraceid=04ba92e87b2342b9a14daca5812cc52aoxob&time__1311=n4mx0DnDBiitiQo4GNulxU2nD9iBDc70ZAnYD) - [通过反射扫描被注解修饰的类](https://github.com/Y4tacker/JavaSec/blob/main/%E5%85%B6%E4%BB%96/%E9%80%9A%E8%BF%87%E5%8F%8D%E5%B0%84%E6%89%AB%E6%8F%8F%E8%A2%AB%E6%B3%A8%E8%A7%A3%E4%BF%AE%E9%A5%B0%E7%9A%84%E7%B1%BB/index.md) - [低版本下Java文件系统00截断](https://github.com/Y4tacker/JavaSec/blob/main/1.%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/%E4%BD%8E%E7%89%88%E6%9C%AC%E4%B8%8BJava%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F00%E6%88%AA%E6%96%AD/index.md) From af88f96e0d11ed5c1430f2acd1862760ad34a056 Mon Sep 17 00:00:00 2001 From: Y4tacker <56486273+Y4tacker@users.noreply.github.com> Date: Wed, 25 Mar 2026 22:19:59 +0800 Subject: [PATCH 2/4] docs: add layered AGENTS governance and docs index --- .../AGENTS.override.md" | 25 +++++++ AGENTS.md | 74 +++++++++++++++++++ docs/DESIGN.md | 19 +++++ docs/FRONTEND.md | 8 ++ docs/PLANS.md | 16 ++++ docs/PRODUCT_SENSE.md | 15 ++++ docs/QUALITY_SCORE.md | 12 +++ docs/README.md | 27 +++++++ docs/RELIABILITY.md | 16 ++++ docs/SECURITY.md | 13 ++++ 10 files changed, 225 insertions(+) create mode 100644 "16.\346\274\217\346\264\236\345\244\215\347\216\260/AGENTS.override.md" create mode 100644 AGENTS.md create mode 100644 docs/DESIGN.md create mode 100644 docs/FRONTEND.md create mode 100644 docs/PLANS.md create mode 100644 docs/PRODUCT_SENSE.md create mode 100644 docs/QUALITY_SCORE.md create mode 100644 docs/README.md create mode 100644 docs/RELIABILITY.md create mode 100644 docs/SECURITY.md diff --git "a/16.\346\274\217\346\264\236\345\244\215\347\216\260/AGENTS.override.md" "b/16.\346\274\217\346\264\236\345\244\215\347\216\260/AGENTS.override.md" new file mode 100644 index 0000000..906e296 --- /dev/null +++ "b/16.\346\274\217\346\264\236\345\244\215\347\216\260/AGENTS.override.md" @@ -0,0 +1,25 @@ +# AGENTS.override.md + +适用范围:`16.漏洞复现/` + +本文件补充根目录 `AGENTS.md`,详细正文见 `docs/DESIGN.md`、`docs/RELIABILITY.md`、`docs/SECURITY.md`。 +这里只写本目录局部规则,不重复全局规范。 + +## 目录职责 +- 负责按漏洞编号沉淀复现笔记与关键截图。 +- 负责记录该漏洞的环境条件、复现路径与观察结果。 + +## 不负责内容 +- 不承载仓库级方法论与全局规范(放到 `docs/`)。 +- 不作为通用 payload 字典或无上下文脚本堆放区。 + +## 局部硬规则 +- 每个漏洞目录至少说明影响组件与版本区间。 +- 复现步骤必须包含前置条件与失败排查线索。 +- 对可能引导误用的内容,必须附合法使用提示。 +- 截图命名与步骤顺序保持一致,便于对照。 + +## 改动落点 +- 新漏洞复现:优先新建 `16.漏洞复现/CVE-YYYY-NNNNN/`。 +- 既有漏洞补充:优先更新对应 CVE 目录下现有文档。 +- 共性方法论:不要写在本目录,改写到 `docs/`。 diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..cebc772 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,74 @@ +# AGENTS.md + +本文件是 JavaSec 仓库的**全局地图**,不是完整规范正文。 + +## 仓库目标 +- Java 安全学习与研究笔记沉淀。 +- 以可复现、可检索、可扩展为目标维护知识目录。 +- 面向“人类开发者 + Agent”协作,优先保证改动落在正确层级。 + +## 规则优先级 +1. 根目录 `AGENTS.md`(全局入口与默认流程) +2. 目录级 `AGENTS.override.md`(局部差异与落点) +3. `docs/` 主题文档(详细规则正文) + +补充: +- override 只做补充,不推翻全局方向。 +- 同一条规则只在一个地方定义;其他地方只做摘要与跳转。 + +## 默认工作流 +1. BDD:先定义要解决的问题与行为边界。 +2. TDD:先写或先明确验证方式,再进行改动。 +3. Implement:最小可行改动,避免跨目录漂移。 +4. Verify:自检链接、结构与可读性,再提交。 + +## 快速决策 +- 不确定改动放哪里:先看 `docs/DESIGN.md`。 +- 不确定质量门槛:先看 `docs/QUALITY_SCORE.md`。 +- 涉及 exploit / payload / 风险描述:先看 `docs/SECURITY.md`。 +- 涉及稳定性与可复现:先看 `docs/RELIABILITY.md`。 +- 涉及执行计划与拆解:先看 `docs/PLANS.md`。 + +## docs 主题文档入口 +- 文档总索引:`docs/README.md` +- 架构边界:`docs/DESIGN.md` +- 可靠性规则:`docs/RELIABILITY.md` +- 安全约束:`docs/SECURITY.md` +- 产品行为:`docs/PRODUCT_SENSE.md` +- 质量标准:`docs/QUALITY_SCORE.md` +- 计划管理:`docs/PLANS.md` +- 前端相关(如有):`docs/FRONTEND.md` + +## 目录级 override +- `16.漏洞复现/AGENTS.override.md` + +> 若后续目录出现稳定且重复发生的“局部落错层”问题,再新增 override。 + +## 任务完成前最少检查 +- 改动是否落在正确目录层级。 +- 是否引入重复规则(与 `docs/` 或其他文档冲突)。 +- 新增链接是否可读、命名是否一致。 +- 涉及复现流程时,是否给出前置条件/版本信息/风险声明。 +- 提交信息是否能说明“改了什么、为什么改”。 + +## 全局硬规则(少而硬) +- 先定义验证方式,再动手改内容。 +- 不把目录局部规则写回根文档。 +- 外部引用尽量给出上下文,不仅贴链接。 +- 复现内容必须标注适用范围与合法使用边界。 +- 尽量结构化表达,减少脆弱的口语化约定。 + +## 文档维护约定 +- 根文档保持短小,控制在快速浏览可读范围。 +- 主题规则写入 `docs/`,避免散落在各子目录。 +- 局部差异写入对应目录 `AGENTS.override.md`。 +- 目录级文档优先说明“负责什么/不负责什么/改动落点”。 + +## 新增 override 的触发条件 +仅当以下条件明显成立时新增: +- 该目录有稳定的独有边界。 +- 该目录常见错误可被提前约束。 +- 不写 override 会导致改动频繁落错层。 + +## 一句话总结 +用根文档做地图、用 `docs/` 承载正文、用 override 记录局部差异。 diff --git a/docs/DESIGN.md b/docs/DESIGN.md new file mode 100644 index 0000000..4061d21 --- /dev/null +++ b/docs/DESIGN.md @@ -0,0 +1,19 @@ +# DESIGN + +## 目标 +明确“内容放哪里、为什么放那里”,减少知识漂移。 + +## 分层边界 +- 根 `AGENTS.md`:导航、优先级、默认流程。 +- `docs/*.md`:全局详细规则正文。 +- `/AGENTS.override.md`:该目录独有差异。 + +## 目录落点原则 +- 与具体漏洞复现强绑定的流程:放对应漏洞目录。 +- 与仓库通用方法论相关:放 `docs/`。 +- 与局部目录实践差异相关:放目录 override。 + +## 反模式 +- 在多个文件重复定义同一规则。 +- 在根文档塞入长篇实现细节。 +- 在局部目录写全局规范。 diff --git a/docs/FRONTEND.md b/docs/FRONTEND.md new file mode 100644 index 0000000..a846f13 --- /dev/null +++ b/docs/FRONTEND.md @@ -0,0 +1,8 @@ +# FRONTEND + +当前仓库以前端实现为主的内容较少,本文件作为保留位。 + +若未来新增前端可视化内容,遵循: +- 优先清晰展示学习路径与安全边界。 +- 交互说明优先于视觉装饰。 +- 示例默认不连接真实高风险目标。 diff --git a/docs/PLANS.md b/docs/PLANS.md new file mode 100644 index 0000000..044d644 --- /dev/null +++ b/docs/PLANS.md @@ -0,0 +1,16 @@ +# PLANS + +## 使用场景 +当任务需要跨多个目录或分阶段推进时,先写计划再实施。 + +## 推荐模板 +1. 目标:一句话定义交付结果。 +2. 范围:明确包含/不包含。 +3. 里程碑:按可验证节点拆分。 +4. 风险:列出已知不确定性。 +5. 验证:每阶段对应检查动作。 + +## 执行原则 +- 计划尽量小步快跑。 +- 每次提交与一个里程碑绑定。 +- 完成后回写复盘,沉淀到 `docs/` 或目录文档。 diff --git a/docs/PRODUCT_SENSE.md b/docs/PRODUCT_SENSE.md new file mode 100644 index 0000000..3802332 --- /dev/null +++ b/docs/PRODUCT_SENSE.md @@ -0,0 +1,15 @@ +# PRODUCT_SENSE + +## 面向读者体验 +- 默认读者是“有基础但不一定熟悉该点”的学习者。 +- 先给结论,再给原理,最后给复现步骤。 + +## 内容结构建议 +- 背景(问题是什么) +- 原理(为什么会发生) +- 利用/防护(怎么做) +- 边界(什么情况下不成立) + +## 一致性要求 +- 命名风格尽量统一。 +- 避免“只对作者自己可读”的缩写与省略。 diff --git a/docs/QUALITY_SCORE.md b/docs/QUALITY_SCORE.md new file mode 100644 index 0000000..50d794a --- /dev/null +++ b/docs/QUALITY_SCORE.md @@ -0,0 +1,12 @@ +# QUALITY_SCORE + +## 评分维度(提交前自检) +- 正确性:信息是否可验证。 +- 完整性:是否覆盖前提、步骤、结果、边界。 +- 可读性:结构是否清晰、标题是否可检索。 +- 可维护性:是否减少重复规则与路径漂移。 + +## 最低通过线 +- 不破坏现有目录结构。 +- 不引入规则冲突。 +- 新增内容有明确归属层级。 diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..24ec8e4 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,27 @@ +# docs/README.md + +本目录是 JavaSec 的规则正文索引(Single Source of Truth)。 + +## 推荐阅读顺序 +1. `DESIGN.md`:先理解仓库边界与目录落点。 +2. `RELIABILITY.md`:确认复现与记录的稳定性要求。 +3. `SECURITY.md`:了解安全边界与风险表达要求。 +4. `QUALITY_SCORE.md`:按统一标准做自检。 +5. `PLANS.md`:需要分阶段推进时使用。 +6. `PRODUCT_SENSE.md`:面向读者体验与内容行为约束。 + +## 主题文档 +- `DESIGN.md`:架构边界与信息分层。 +- `RELIABILITY.md`:可复现、可验证、可维护。 +- `SECURITY.md`:合法性、最小披露、风险提示。 +- `PRODUCT_SENSE.md`:学习路径与读者体验。 +- `QUALITY_SCORE.md`:提交前质量评分清单。 +- `PLANS.md`:任务拆解、里程碑与回顾。 +- `FRONTEND.md`:前端相关内容(当前仓库少量使用)。 + +## 子目录约定 +- `design-docs/`:深度设计附录。 +- `exec-plans/`:执行计划与技术债记录。 +- `generated/`:生成工件与自动化产物。 +- `product-specs/`:规格类文档。 +- `references/`:参考材料、历史记录、外部手册。 diff --git a/docs/RELIABILITY.md b/docs/RELIABILITY.md new file mode 100644 index 0000000..8bd2989 --- /dev/null +++ b/docs/RELIABILITY.md @@ -0,0 +1,16 @@ +# RELIABILITY + +## 复现可靠性要求 +- 写明环境前置条件(JDK/中间件/依赖版本)。 +- 写明关键步骤和预期结果。 +- 明确失败路径(常见报错与排查方向)。 + +## 文档可靠性要求 +- 标题与目录命名稳定,不随意改动。 +- 外链尽量补充摘要,避免“仅链接无上下文”。 +- 历史内容更新时保留迁移说明。 + +## 提交前检查 +- 路径是否正确。 +- 链接是否有效。 +- 是否引入规则重复或冲突。 diff --git a/docs/SECURITY.md b/docs/SECURITY.md new file mode 100644 index 0000000..e329de1 --- /dev/null +++ b/docs/SECURITY.md @@ -0,0 +1,13 @@ +# SECURITY + +## 合法与伦理边界 +- 所有复现与攻击链内容仅用于授权测试与学习研究。 +- 禁止将仓库内容用于未授权目标。 + +## 内容最小披露原则 +- 给出必要的原理与复现信息,不鼓励无上下文投递 payload。 +- 风险高的内容优先强调防御视角与检测思路。 + +## 编写约束 +- 标注影响范围、前提条件与限制。 +- 避免夸大“通杀”效果,结论需带约束条件。 From 905a28e527a756974362491c60a5276800f32cbb Mon Sep 17 00:00:00 2001 From: Y4tacker <56486273+Y4tacker@users.noreply.github.com> Date: Wed, 25 Mar 2026 22:29:46 +0800 Subject: [PATCH 3/4] =?UTF-8?q?docs:=20=E7=A7=BB=E9=99=A4=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E7=AF=87=E8=A1=A5=E5=85=85=E8=AF=B4=E6=98=8E=E6=AE=B5?= =?UTF-8?q?=E8=90=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/README.md b/README.md index 7b814d6..c07070a 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,34 @@ ## 1.基础篇 +### 1.1 Java安全基础技术补充(建议优先掌握) + +- **JVM 规范与字节码基础(必修)** + - [The Java Virtual Machine Specification (Java SE 17)](https://docs.oracle.com/javase/specs/jvms/se17/html/)(官方 JVM 规范,理解类加载、字节码验证、方法调用语义) + - [Java Platform, Standard Edition VM Guide (JDK 17)](https://docs.oracle.com/en/java/javase/17/vm/index.html)(JVM 调优与运行机制入门) +- **Java语言与并发内存模型(必修)** + - [Java Language Specification](https://docs.oracle.com/javase/specs/)(语言行为、反射/泛型/异常等语义来源) + - [JEP 290: Filter Incoming Serialization Data](https://openjdk.org/jeps/290)(反序列化防护基础,Java 安全核心知识点) +- **常见漏洞知识体系(必修)** + - [OWASP Top 10: 2021](https://owasp.org/Top10/2021/)(Web 应用通用风险基线) + - [CWE-502: Deserialization of Untrusted Data](https://cwe.mitre.org/data/definitions/502.html)(Java 反序列化高频风险权威定义) + - [OWASP: XML External Entity Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html)(XXE 防护建议,可对应本仓库 XXE 学习) +- **Java Web 运行时与组件安全(必修)** + - [Jakarta Servlet Specification](https://jakarta.ee/specifications/servlet/)(理解 Filter/Servlet/Listener 生命周期,对内存马与链路分析非常关键) + - [Apache Tomcat Documentation](https://tomcat.apache.org/tomcat-9.0-doc/)(容器行为与安全配置参考) +- **依赖与供应链安全(建议尽早)** + - [OWASP Dependency-Check](https://owasp.org/www-project-dependency-check/)(Java 依赖漏洞扫描基础工具) + - [Maven: Introduction to the Dependency Mechanism](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html)(理解传递依赖,定位 gadget 来源) +- **编码防护与审计基线(建议配合实战)** + - [OWASP Java Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Java_Security_Cheat_Sheet.html) + - [OWASP Code Review Guide](https://owasp.org/www-project-code-review-guide/)(建立 Java 代码审计检查项) + +### 1.2 建议学习顺序(面向 Java 安全) + +1. JVM/JLS 基础 -> 2. 类加载与反射/动态代理 -> 3. 序列化与 JEP 290 -> 4. Servlet/Tomcat 生命周期 -> 5. 常见漏洞体系(OWASP/CWE)-> 6. 依赖与供应链安全。 + +--- + - [Java反射](https://github.com/Y4tacker/JavaSec/blob/main/1.%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/%E5%8F%8D%E5%B0%84/%E5%8F%8D%E5%B0%84.md) - [补充:通过反射修改用final static修饰的变量](https://github.com/Y4tacker/JavaSec/tree/main/1.%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/%E9%80%9A%E8%BF%87%E5%8F%8D%E5%B0%84%E4%BF%AE%E6%94%B9%E7%94%A8final%E4%BF%AE%E9%A5%B0%E7%9A%84%E5%8F%98%E9%87%8F) - [Java动态代理](https://github.com/Y4tacker/JavaSec/blob/main/1.%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86/%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86.md) From 18c9b75262872ccdb98d85e5722a838a3e2418bc Mon Sep 17 00:00:00 2001 From: Y4tacker <56486273+Y4tacker@users.noreply.github.com> Date: Wed, 25 Mar 2026 22:40:36 +0800 Subject: [PATCH 4/4] =?UTF-8?q?docs:=20=E7=A7=BB=E9=99=A4Fastjson=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E5=85=AC=E5=91=8A=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/README.md b/README.md index 7b814d6..c5e0c44 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,34 @@ ## 1.基础篇 +### 1.1 Java安全基础技术补充(建议优先掌握) + +- **JVM 规范与字节码基础(必修)** + - [The Java Virtual Machine Specification (Java SE 17)](https://docs.oracle.com/javase/specs/jvms/se17/html/)(官方 JVM 规范,理解类加载、字节码验证、方法调用语义) + - [Java Platform, Standard Edition VM Guide (JDK 17)](https://docs.oracle.com/en/java/javase/17/vm/index.html)(JVM 调优与运行机制入门) +- **Java语言与并发内存模型(必修)** + - [Java Language Specification](https://docs.oracle.com/javase/specs/)(语言行为、反射/泛型/异常等语义来源) + - [JEP 290: Filter Incoming Serialization Data](https://openjdk.org/jeps/290)(反序列化防护基础,Java 安全核心知识点) +- **常见漏洞知识体系(必修)** + - [OWASP Top 10: 2021](https://owasp.org/Top10/2021/)(Web 应用通用风险基线) + - [CWE-502: Deserialization of Untrusted Data](https://cwe.mitre.org/data/definitions/502.html)(Java 反序列化高频风险权威定义) + - [OWASP: XML External Entity Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html)(XXE 防护建议,可对应本仓库 XXE 学习) +- **Java Web 运行时与组件安全(必修)** + - [Jakarta Servlet Specification](https://jakarta.ee/specifications/servlet/)(理解 Filter/Servlet/Listener 生命周期,对内存马与链路分析非常关键) + - [Apache Tomcat Documentation](https://tomcat.apache.org/tomcat-9.0-doc/)(容器行为与安全配置参考) +- **依赖与供应链安全(建议尽早)** + - [OWASP Dependency-Check](https://owasp.org/www-project-dependency-check/)(Java 依赖漏洞扫描基础工具) + - [Maven: Introduction to the Dependency Mechanism](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html)(理解传递依赖,定位 gadget 来源) +- **编码防护与审计基线(建议配合实战)** + - [OWASP Java Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Java_Security_Cheat_Sheet.html) + - [OWASP Code Review Guide](https://owasp.org/www-project-code-review-guide/)(建立 Java 代码审计检查项) + +### 1.2 建议学习顺序(面向 Java 安全) + +1. JVM/JLS 基础 -> 2. 类加载与反射/动态代理 -> 3. 序列化与 JEP 290 -> 4. Servlet/Tomcat 生命周期 -> 5. 常见漏洞体系(OWASP/CWE)-> 6. 依赖与供应链安全。 + +--- + - [Java反射](https://github.com/Y4tacker/JavaSec/blob/main/1.%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/%E5%8F%8D%E5%B0%84/%E5%8F%8D%E5%B0%84.md) - [补充:通过反射修改用final static修饰的变量](https://github.com/Y4tacker/JavaSec/tree/main/1.%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/%E9%80%9A%E8%BF%87%E5%8F%8D%E5%B0%84%E4%BF%AE%E6%94%B9%E7%94%A8final%E4%BF%AE%E9%A5%B0%E7%9A%84%E5%8F%98%E9%87%8F) - [Java动态代理](https://github.com/Y4tacker/JavaSec/blob/main/1.%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86/%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86.md) @@ -51,6 +79,21 @@ 如果想系统学习CC链、CB链的话这部分还是推荐p牛的[Java安全漫谈](https://github.com/phith0n/JavaThings),我只是简单写写便于自己复习而已(这部分看我下面的share并不适合新人,过了这么久看过网上很多文章还是觉得P牛写的更适合新人) +### 2.1 反序列化基础技术补充(建议先补理论再看链子) + +- **官方机制与防护入口(必修)** + - [Java Object Serialization Specification](https://docs.oracle.com/en/java/javase/22/docs/specs/serialization/index.html)(序列化协议、`readObject/writeObject`、`serialVersionUID`等基础语义) + - [JEP 290: Filter Incoming Serialization Data](https://openjdk.org/jeps/290)(全局/上下文过滤器设计思路) +- **漏洞定义与防御基线(必修)** + - [CWE-502: Deserialization of Untrusted Data](https://cwe.mitre.org/data/definitions/502.html)(风险定义、常见后果与缓解建议) + - [OWASP Deserialization Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html)(工程侧防护 checklist) +- **工具与实践(建议配合靶场)** + - [ysoserial](https://github.com/frohoff/ysoserial)(理解 gadget chain 构造与触发路径的经典工具) + +### 2.2 建议学习顺序(反序列化) + +1. 先读序列化规范 -> 2. 理解 `ObjectInputStream` 触发路径 -> 3. 学 URLDNS/CC 等入门链 -> 4. 学 JEP 290 与白名单过滤 -> 5. 再看特定框架(Hessian/XStream/SnakeYAML)利用。 + - [Java 反序列化取经路(强推)](https://su18.org/post/ysuserial/) - [Java反序列化之URLDNS](https://github.com/Y4tacker/JavaSec/blob/main/%E5%85%B6%E4%BB%96/Java%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E4%B9%8BURLDNS/Java%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E4%B9%8BURLDNS.md) - [CommonsCollections1笔记](https://github.com/Y4tacker/JavaSec/blob/main/2.反序列化专区/CommonsCollections1/CommonsCollections1.md) @@ -92,6 +135,21 @@ 可以对比jackson简单学习下,这里我也会简单提一下jackson的一些利用,当然不会很详细,但是会简单列出一些触发原理,而且有些payload是共通的,这里也不以收集各个依赖下利用的payload为主 +### 3.1 JSON反序列化基础技术补充(Fastjson / Jackson) + +- **Jackson(必修)** + - [Jackson Polymorphic Deserialization CVE Criteria](https://github.com/FasterXML/jackson/wiki/Jackson-Polymorphic-Deserialization-CVE-Criteria)(官方维护者对“可利用条件”的边界说明) + - [Jackson Polymorphic Deserialization Docs](https://github.com/FasterXML/jackson-docs/wiki/JacksonPolymorphicDeserialization)(`@JsonTypeInfo` 与 Default Typing 的行为) +- **Fastjson(必修)** + - [fastjson2 官方仓库](https://github.com/alibaba/fastjson2)(默认安全策略与新版本能力演进) + - [fastjson2 features_cn 文档](https://github.com/alibaba/fastjson2/blob/main/docs/features_cn.md)(了解 AutoType 等特性开关,避免误配) +- **通用风险视角(建议)** + - [OWASP API Security Top 10](https://owasp.org/API-Security/)(将 JSON 反序列化问题放到 API 风险体系中看) + +### 3.2 建议学习顺序(Fastjson / Jackson) + +1. 先搞清楚类型系统与自动类型机制 -> 2. 看历史漏洞成因与补丁策略 -> 3. 再学利用链触发细节 -> 4. 最后沉淀黑/白盒识别与加固 checklist。 + - Jackson - [Jackson的利用触发及小细节(比较鸡肋仅作为学习了解)](https://github.com/Y4tacker/JavaSec/blob/main/3.FastJson%E4%B8%93%E5%8C%BA/Jackson%E7%9A%84%E5%88%A9%E7%94%A8%E8%A7%A6%E5%8F%91/index.md)