mcpField
I
insecure-source-code-management

insecure-source-code-management

github.com/yaklang安全2.6k3.7k 次安装6 周前更新
代码仓库

关于 insecure-source-code-management

用于授权安全评估的技能,检查暴露的版本控制元数据和备份文件,并介绍 Git、SVN、Mercurial、Bazaar 等内容的检测与恢复方法。

主要功能

  1. 01Git 元数据检测与恢复
  2. 02SVN 工作副本恢复
  3. 03Mercurial 和 Bazaar 检查
  4. 04`.DS_Store` 与备份探测
  5. 05判断 403 和 404 响应

适用场景

  1. 01检查授权范围内站点的仓库文件暴露
  2. 02从可访问的元数据恢复源文件
  3. 03排查备份和配置文件泄露

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/yaklang/hack-skills --skill insecure-source-code-management

安装后在 Claude Code 中输入/insecure-source-code-management确认已加载。

详细介绍

技能:不安全的源代码管理

AI 加载指令:此技能涵盖对暴露的版本控制元数据、常见备份产物及相关错误配置的检测与恢复。仅限在获得授权的评估中使用。将恢复的凭据和 URL 视为敏感信息;不得超出范围外泄真实数据。如需广泛的发现工作流,请在工作区中存在 recon-for-sec 和 recon-and-methodology 时一并加载。

0. 快速开始

优先探测的高价值路径(使用 GET 或 HEAD,并遵守速率限制):

/.git/HEAD
/.git/config
/.svn/entries
/.svn/wc.db
/.hg/requires
/.bzr/README
/.DS_Store
/.env

路由说明:先快速探测这些路径;如需完整的侦察工作流,请在深入测试前加载 recon-for-sec 和 recon-and-methodology 中的方法论。


1. GIT 暴露

检测
  • /.git/HEAD — 有效的仓库通常会返回如下纯文本:
ref: refs/heads/main
  • /.git/config — 可能暴露 remote.origin.url、用户身份或内嵌凭据。
  • /.git/index、/.git/objects/ — 访问部分对象存储后,使用合适的工具即可重建仓库。
403 与 404
  • 404 — 路径可能不存在,或已在边缘处被完全拦截。
  • /.git/ 返回 403 — 目录可能存在,但不允许列出内容;仍应尝试直接访问文件 URL:
/.git/HEAD
/.git/config
/.git/logs/HEAD
/.git/refs/heads/main

目录返回 403,而 HEAD 返回 200,强烈表明存在暴露。

恢复工具(开源)
  • arthaud/git-dumper — 当各个文件可获取时,转储可访问的 .git 树。
  • internetwache/GitTools — 用于处理部分转储或损坏转储的 Dumper、Extractor、Finder 模块。
  • WangYihang/GitHacker — 标准转储工具无法处理边缘情况时的替代恢复方案。
优先检查的关键文件
路径重要性
.git/config远程仓库、凭据、钩子路径
.git/logs/HEAD提交历史、类似 reflog 的信息泄露
.git/refs/heads/*分支头指针、提交 SHA
.git/packed-refs打包的分支/标签引用
.git/objects/**用于重建的对象 blob

2. SVN 暴露

检测
  • SVN 1.7 之前的版本:/.svn/entries — 列出路径和修订版本的 XML 或文本元数据。
  • SVN ≥ 1.7:/.svn/wc.db — SQLite 工作副本数据库(下载后使用 PRAGMA table_info)。

探测示例:

GET /.svn/entries HTTP/1.1
GET /.svn/wc.db HTTP/1.1
恢复
  • anantshri/svn-extractor — 从暴露的 .svn 中自动提取。
  • 手动操作:下载 wc.db,使用 sqlite3 查询文件路径和校验和,然后在暴露时请求 /.svn/pristine/ blob。

3. MERCURIAL 暴露

检测
  • /.hg/requires — 列出仓库功能的小型文本文件;可用于确认存在 Mercurial 元数据。
GET /.hg/requires HTTP/1.1
GET /.hg/store/ HTTP/1.1
恢复
  • sahildhar/mercurial_source_code_dumper — 当存储路径可访问时转储仓库。

4. 其他泄露

Bazaar(Bzr)
  • 探测 /.bzr/README 和 /.bzr/branch-format,检查 Bazaar 元数据。
macOS .DS_Store
  • /.DS_Store 可能包含目录和文件名列表。
  • 工具:gehaxelt/ds-store、lijiejie/ds_store_exp — 离线解析 .DS_Store。
备份和配置产物

探测以下路径(根据应用根目录和命名惯例调整):

/.env
/backup.zip
/backup.tar.gz
/wwwroot.rar
/backup.sql
/config.php.bak
/.config.php.swp
Web 服务器错误配置迹象(示例:NGINX)
  • location /.git { deny all; } — 可能导致 /.git/ 返回 403,但对特定子路径仍可能按规则放行或拒绝。
  • 受保护位置返回 403 可能确认该路由存在;务必与不存在路径返回的 404 区分开。

5. 决策树

  1. 探测 /.git/HEAD → 是否符合 ref: refs/heads/ 模式?→ 运行 git-dumper / GitTools / GitHacker;检查 config 和 logs/HEAD 中是否有机密信息。
  2. 否则探测 /.svn/wc.db 或 entries → 是否成功?→ 使用 svn-extractor,或手动恢复 wc.db + pristine。
  3. 否则探测 /.hg/requires → 是否成功?→ 使用 mercurial dumper。
  4. 否则探测 /.bzr/README → 使用 Bazaar 工具,或手动遍历路径。
  5. 并行执行:获取应用根路径和父路径中的 /.DS_Store、/.env 及常见备份扩展名文件。
  6. 解读状态码:目录返回 403,而特定文件返回 200 → 将其视为文件逐个提取的高优先级目标。

6. 相关路由

  • 来自 安全侦察 — 在深入测试 VCS 之前,进行范围安全的发现、爬取和指纹识别。
  • 来自 侦察与方法论 — 结构化的方法论和证据处理。

注意:与侦察技能协调——先设定范围并确定请求速率,再进行有针对性的 VCS/备份验证。

评论

支持 Markdown