Token导航 LogoToken导航

Agent Skill · 研究检索

java-file-read-audit(Java file read 审核)

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

java-file-read-audit 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描有未通过项,按安装量在研究检索类的 73,675 个 Skill 里排第 53,927。

总安装 519周安装 21GitHub Stars 632下载 163核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 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

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

用于辅助 Java 项目开发、面向对象设计和 Spring 生态集成。适合分析类结构、设计接口、整理服务分层或生成测试代码。使用时需结合项目已有架构、包结构和依赖版本,避免仅按教程修改代码。涉及数据库、事务或并发配置时,应先确认运行环境和回归测试范围。

java-file-read-audit 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/java-file-read-audit

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/ruoji6/java-audit-skills --skill java-file-rea…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

java-file-read-audit 怎么安装?

在终端执行 npx skills add https://github.com/ruoji6/java-audit-skills --skill java-file-read-audit。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

java-file-read-audit 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

java-file-read-audit 需要什么权限?

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

java-file-read-audit 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

java-file-read-audit 用的人多吗?

公开数据是累计安装 519 次,近一周安装 21 次,下载 163 次,GitHub 632 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

java-file-read-audit 安全吗?

第三方扫描有未通过项,风险较高。除非你确认过源码,否则不建议直接安装到常用环境。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
java-file-read-audit

Java file read 审核 · 本页

519632需要联网未明确未通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

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/download → api_file_download
  • 例如:/download.action → download

输出格式

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

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

验证检查清单

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

代码分析检查

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

执行条件检查(CRITICAL)

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

漏洞检测检查

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

报告完整性检查

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

参考资料

平台分布

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 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills