Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计异常

java-file-read-auditJava file read 审核

Agent Skill

用于辅助 Java 项目开发、面向对象设计、Spring 生态、Maven 或 Gradle 依赖和后端工程实践。它适合让 Agent 分析类结构、设计接口、整理服务分层、生成测试或检查常见代码坏味道。使用时需要结合项目已有架构、包结构和依赖版本,不应只按通用教程改代码;涉及数据库、事务、并发或框架配置时,应先确认运行环境和回归测试范围。

总安装

519

周安装

21

GitHub Stars

632

下载量

163
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:java-file-read-audit(Java file read 审核)
来源仓库:https://github.com/ruoji6/java-audit-skills
仓库路径:skills/java-file-read-audit
安装命令:
npx skills add https://github.com/ruoji6/java-audit-skills --skill java-file-read-audit
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/ruoji6/java-audit-skills --skill java-file-read-audit

简介

用于辅助 Java 项目开发、面向对象设计和 Spring 生态集成。

  • 适合分析类结构、设计接口、整理服务分层或生成测试代码。
  • 使用时需结合项目已有架构、包结构和依赖版本,避免仅按教程修改代码。
  • 涉及数据库、事务或并发配置时,应先确认运行环境和回归测试范围。
  • java-file-read-audit 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Java 文件读取漏洞审计工具

检查 Java Web 项目源码,识别文件读取操作实现,检测任意文件读取和路径遍历漏洞。

核心要求

此技能必须完整分析所有文件读取相关代码,不允许省略。

  • ✅ 识别所有文件读取入口点(BufferedReader/Scanner/Files)
  • ✅ 分析每个文件操作的路径来源
  • ✅ 检测所有潜在的路径遍历模式
  • ✅ 为每个漏洞点提供验证 PoC
  • ❌ 禁止省略任何文件读取操作
  • ❌ 禁止跳过反编译步骤

漏洞分级标准

详见 SEVERITY_RATING.md

  • 漏洞编号格式: {C/H/M/L}-FILE-{序号}
  • 严重等级 = f(可达性 R, 影响范围 I, 利用复杂度 C)
  • Score = R × 0.40 + I × 0.35 + C × 0.25,映射 CVSS 3.1
前缀CVSS 3.1含义
🔴 C9.0-10.0可直接导致系统沦陷
🟠 H7.0-8.9可造成重大损害
🟡 M4.0-6.9可造成一定损害
🔵 L0.1-3.9安全加固建议

技能协作流程(CRITICAL)

java-file-read-audit 应在 java-route-mapper 之后执行,基于已梳理的路由信息进行审计。

┌─────────────────────────────────────────────────────────────────┐
│                    完整审计流程                                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  [步骤1] java-route-mapper                                      │
│     │                                                           │
│     │ 输出:                                                    │
│     │ ├─ 所有 HTTP 路由列表                                     │
│     │ ├─ 每个路由的参数定义                                     │
│     │ │   ├─ 参数名、类型                                       │
│     │ │   └─ JSON 内部字段                                      │
│     │ └─ Burp Suite 请求模板                                    │
│     │                                                           │
│     ↓                                                           │
│  [步骤2] java-file-read-audit(本技能)                         │
│     │                                                           │
│     │ 输入:java-route-mapper 的输出                            │
│     │                                                           │
│     │ 执行:                                                    │
│     │ ├─ 快速扫描文件操作                                       │
│     │ ├─ 参数-文件路径映射分析                                  │
│     │ ├─ 检查每个 String 参数是否用作文件路径                   │
│     │ └─ 执行条件分析                                           │
│     │                                                           │
│     ├─── 需要深入追踪 ───→ java-route-tracer                    │
│     │                           │                               │
│     │    ←── 返回调用链信息 ────┘                               │
│     │                                                           │
│     ↓                                                           │
│  [步骤3] 输出综合审计报告                                       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

输入依赖(来自 java-route-mapper)

在开始审计前,必须先检查是否已有 java-route-mapper 的输出文件:

{project_name}_audit/
├── route_mapper/
│   ├── {project_name}_route_mapper_{timestamp}.md    ← 主索引(先读此文件定位模块详情)
│   ├── {module_name}/
│   │   └── {project_name}_module_{module_name}_{timestamp}.md  ← 模块详情
│   └── webservice/
│       └── {project_name}_ws_{service_name}_{timestamp}.md
└── file_read_audit/
    └── {project_name}_file_read_audit_{timestamp}.md  ← 本技能输出

如果 route_mapper 输出不存在,必须先运行:

Skill(skill="java-route-mapper", args="--project {project_path}")

从 route_mapper 获取的关键信息

信息用途
路由路径定位 Controller/Action 入口
参数名 + 类型识别 String 类型高危参数
JSON 内部字段识别嵌套参数(如 fileInfo.path
参数用途描述判断是否用于文件路径

工作流程(三阶段)

阶段1: 快速扫描(优先执行)

目标:快速定位文件读取相关代码,不遗漏关键点。

# 1.1 搜索文件读取方法
grep -ri "BufferedReader\|FileReader\|FileInputStream" --include="*.java"
grep -ri "Scanner.*File\|Scanner.*Path" --include="*.java"
grep -ri "Files.lines\|Files.readAllLines\|Files.readAllBytes" --include="*.java"

# 1.2 搜索文件下载/读取接口
grep -ri "download\|readFile\|getFile\|viewFile" --include="*.java"
grep -ri "@RequestMapping.*download\|@GetMapping.*download" --include="*.java"

# 1.3 搜索路径拼接模式
grep -ri "new File.*\+" --include="*.java"
grep -ri "Paths.get.*\+" --include="*.java"
grep -ri "File.separator" --include="*.java"

# 1.4 搜索路径参数
grep -ri "filePath\|fileName\|file\|path" --include="*.java" | grep "@RequestParam\|@PathVariable"

输出:高危文件清单(按优先级排序)

优先级文件类型审计重点
P0*Controller.java 中包含 download/readFile 的方法filePath, fileName 参数
P1*Service.java, *ServiceImpl.java文件路径处理逻辑
P2*Util.java, *Helper.java通用文件读取方法
P3*Dao.java, *Repository.java配置文件读取

阶段2: 参数-文件路径映射检查

基于 java-route-mapper 的输出,检查每个参数是否用作文件路径。

2.1 高危参数识别

从 route_mapper 输出中提取所有 String 类型参数:

参数来源参数名类型文件读取漏洞可能性
@RequestParamfilePathString高危 - 直接用作路径
@RequestParamfileNameString高危 - 文件名拼接
@RequestParamfileString高危 - 文件路径
@PathVariablepathString高危 - URL 路径参数
JSONfileInfo.pathString高危 - JSON 内部字段

2.2 参数追踪

对每个高危参数,追踪其在代码中的使用:

HTTP 参数: filePath (String)
    ↓ 传递
Controller.download(filePath)
    ↓ 传递
Service.readFile(filePath)
    ↓ 拼接
basePath + File.separator + filePath
    ↓ 使用
new FileInputStream(fullPath)  ← 文件读取点

2.3 文件读取点检查

对阶段1发现的每个文件读取点,检查:

  1. 文件路径是否可控?

- 完全来自用户输入 → 高危 - 基础路径固定 + 用户输入文件名 → 中危 - 完全硬编码 → 安全

  1. 是否有路径校验?

- 白名单目录限制 → 安全 - 文件扩展名校验 → 可能绕过 - 无校验 → 高危

  1. 是否过滤路径遍历字符?

- 过滤 ../, ..\\ → 可能安全(需测试绕过) - 无过滤 → 高危

阶段3: 深入检查与报告

3.1 触发 java-route-tracer

当发现以下情况时,调用 java-route-tracer 获取完整调用链:

触发条件调用方式
参数经过多层传递Skill(skill="java-route-tracer", args="--route {route}")
路径拼接逻辑复杂Skill(skill="java-route-tracer", args="--route {route}")
校验逻辑不明确Skill(skill="java-route-tracer", args="--route {route}")

3.2 执行条件检查

发现文件读取后,必须检查执行条件(详见后续章节)。

3.3 生成报告

整合所有分析结果,生成综合审计报告。


文件读取方法识别

详细规则参见 FILE_READ_METHODS.md

方法类别识别特征风险点
BufferedReadernew BufferedReader(new FileReader(path))path 参数来源
Scannernew Scanner(new FileReader(path))path 参数来源
Files.linesFiles.lines(Path.of(path))path 参数来源
Files.readAllLinesFiles.readAllLines(Path.of(path))path 参数来源
Files.readAllBytesFiles.readAllBytes(Path.of(path))path 参数来源
FileInputStreamnew FileInputStream(path)path 参数来源

反编译阶段(CRITICAL)

当源码不可用时,必须使用 CFR 反编译器反编译文件操作相关类。

详细策略参见 DECOMPILE_STRATEGY.md

反编译工具调用

# 反编译单个 Controller/Service 类
java -jar {CFR_JAR} /path/to/FileController.class --outputdir {output_path}/decompiled

# 反编译文件操作相关目录
find /path/to/WEB-INF/classes/com/example/controller -name "*.class" | xargs java -jar {CFR_JAR} --outputdir {output_path}/decompiled

# 反编译多个指定文件
java -jar {CFR_JAR} /path/to/FileController.class /path/to/FileService.class /path/to/FileUtil.class --outputdir {output_path}/decompiled

输出文件命名规范:

  • 反编译后的文件保存在 {output_dir} 目录
  • 文件名格式:{ClassName}.java
  • 保持原始包结构:com/example/controller/FileController.java

必须反编译的类

类型匹配模式目的
Controller*Controller.class提取路由和参数定义
Service*Service.class, *ServiceImpl.class追踪文件操作调用链
工具类*FileUtil*.class, *FileHelper*.class提取通用文件读取方法
DAO*Dao.class, *Repository.class配置文件读取逻辑

执行条件检查(CRITICAL - 避免误报)

发现文件读取代码后,必须检查该代码是否真的会被执行!

1. 路径校验检查

在发现文件读取后,必须检查是否存在路径校验:

检查模式代码特征处理方式
白名单目录path.startsWith("/upload/")标注为受限路径
扩展名校验fileName.endsWith(".txt")检查是否可绕过
路径规范化new File(path).getCanonicalPath()检查是否完整
无校验直接使用用户输入标注为高危

2. 代码路径可达性分析

追踪从入口到文件读取的完整路径,检查:

检查项说明影响
提前 returnif (!validate()) return;可能阻止执行
异常抛出throw new SecurityException()代码不执行
条件不满足if (false) 等死代码代码不执行
权限限制仅管理员可访问需确认权限

3. 结论分级(必须标注)

状态含义后续操作
⚠️ 待验证代码存在文件读取,但执行条件未确认需确认目标环境
已确认可利用已验证代码路径会执行且无有效校验进行漏洞利用测试
不可利用存在有效的安全校验标注原因,降低优先级
🔍 环境依赖漏洞存在但仅在特定条件下可利用标注环境条件

路径遍历检测规则速查

⚠️ 高危模式检测(CRITICAL)

危险模式代码示例风险说明
直接拼接basePath + fileName未过滤 ../
File.separator 拼接basePath + File.separator + fileName可路径遍历
字符串格式化String.format("%s/%s", base, file)未过滤 ../
Path.of 拼接Path.of(basePath, fileName)可能路径遍历
Paths.get 拼接Paths.get(basePath).resolve(fileName)需检查规范化

⚠️ 安全 vs 危险模式

类型危险模式安全模式
路径拼接basePath + fileName白名单校验 + 规范化
文件读取new FileInputStream(userInput)getCanonicalPath() 校验
路径遍历无过滤 ../path.contains("..") 拦截
扩展名不校验白名单扩展名

安全模式示例:

// 安全: 路径规范化 + 白名单目录校验
String basePath = "/var/uploads";
File file = new File(basePath, fileName);
String canonicalPath = file.getCanonicalPath();
if (!canonicalPath.startsWith(basePath)) {
    throw new SecurityException("Path traversal detected");
}

审计检查清单(防遗漏)

必须搜索的危险模式

在审计开始时,必须执行以下搜索:

# 文件读取方法检测
grep -r "FileInputStream\|FileReader\|BufferedReader" --include="*.java"
grep -r "Files.readAllBytes\|Files.readAllLines\|Files.lines" --include="*.java"

# 路径拼接检测
grep -r "new File.*\+" --include="*.java"
grep -r "File.separator" --include="*.java"

# 下载接口检测
grep -r "download\|readFile\|getFile" --include="*.java"

数据流追踪(需要时加载 java-route-tracer)

何时需要参数追踪

当发现以下情况时,必须加载 java-route-tracer 技能进行深度追踪

场景说明操作
参数经过多层传递HTTP 参数经 Controller → Service → Util 多层传递后用作文件路径加载 java-route-tracer
路径拼接复杂多处路径拼接和转换加载 java-route-tracer
校验逻辑分散校验逻辑在不同类/方法中加载 java-route-tracer

报告生成

输出单个综合审计报告文件:

{project_name}_audit/file_read_audit/
└── {route_name}/
    └── {project_name}_file_read_audit_{timestamp}.md      # 综合审计报告

路由名说明:

  • 路由名从路由路径提取,去掉前缀斜杠和特殊字符
  • 例如:/api/file/downloadapi_file_download
  • 例如:/download.actiondownload

输出格式

严格按照 references/OUTPUT_TEMPLATE.md 中的填充式模板生成输出文件。

  • 文件名格式: {project_name}_file_read_audit_{YYYYMMDD_HHMMSS}.md
  • 不得修改模板结构、不得增删章节、不得调整顺序
  • 所有【填写】占位符必须替换为实际内容
  • 通用规范参考: java-shared/OUTPUT_STANDARD.md

验证检查清单

在标记审计完成前,必须执行以下检查:

代码分析检查

  • 所有 Controller 类已分析
  • 所有 Service/Util 类已分析
  • 每个文件操作都有路径来源标注

执行条件检查(CRITICAL)

  • 检查了路径校验逻辑
  • 检查了代码路径可达性
  • 标注了每个漏洞的可利用性状态

漏洞检测检查

  • 所有文件读取方法已检测
  • 所有路径拼接模式已检测
  • 所有参数来源已追踪

报告完整性检查

  • 综合审计报告已生成,且通过 OUTPUT_TEMPLATE.md 末尾的自检清单
  • 反编译输出文件路径已标注

参考资料

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

37.6%
按下载量换算61

Claude

27.02%
按下载量换算44

Cursor

18.6%
按下载量换算30

Gemini CLI

9.04%
按下载量换算15

安全审计

Gen Agent Trust Hub

未通过

Socket

可疑

Snyk

可疑

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills