一个.git目录能泄露多少东西:四层往下翻"

admin 2026-10-22 12:41:41 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

一个 .git 目录能泄露多少东西:四层往下翻

原创

Sink
Sink

船山信安

2026年10月20日 10:37
湖南

去阅读

实战笔记 · PENTEST

一个 .git 目录能泄露多少东西:四层往下翻

外网一个不起眼的 /.git/config,能顺着 remote 地址摸到内网 GitLab;再顺着历史提交,翻出三年前删掉的数据库密码。

这不是段子,是每年都会遇到的日常。而且大多数人只翻了第一层就停了。

本文以授权测试与源码泄露自查为前提,只说明泄露范围与加固方式,不提供任何针对在运营系统的攻击步骤。

01先确认它在不在,再决定要不要拉

三个探针就够:/.git/HEAD 返回 ref: refs/heads/master 或 ref: refs/heads/main;/.git/config 返回 [core];/.git/index 返回二进制。三个都在,说明整个 .git 目录躺在 web 根下。

踩过最多次的坑是单页应用:所有不存在的路径都兜底返回 200 加首页 HTML。这时候看状态码毫无意义,必须看响应体。ref: 这个字符串骗不了人。

还有个反过来的坑——只泄露了 HEAD 和 config,objects 目录 403。这种占一半以上,说明运维删了部分目录但没删干净。这种情况仍然有价值,因为后面第三层就靠 config。

02第一层:远程地址与作者信息

/.git/config 里通常有这一段:[remote \"origin\"] url = [email protected]:group/repo.git。它一次给了你三样东西:内网 GitLab 的 IP 或域名、项目组名、仓库名。

还有 user.name 和 user.email。别小看这两行,员工命名规则和企业邮箱域名能直接用于后续的资产枚举与社工面分析——这就是为什么它比一个 404 页面危险得多。

报告里怎么写这一段:不写“我拿到了能干什么”,只写“暴露了内网代码仓库地址、项目组名、开发者账号信息”,把风险落在事实层面。

03第二层:源码本身

还原靠 index 里的 blob 哈希逐个拉 objects。工具很多,思路只有一个:先读 .git/index 拿到文件路径和哈希,再按哈希下载对象,最后拼回工作区。

三个卡点:目录列举被关掉时,路径只能从 index 里读,而 index 本身未必能下;仓库用了 packed-refs 加 pack 文件,工具经常在半路失败,得手工 unpack;只泄露了 HEAD 没有 objects,工具直接空转。

经验值:能完整还原的比例其实不高,大概三成。但另外七成不代表白跑,因为第二层不是最值钱的那层。

04第三层:历史提交,最值钱的那层

很多人拿到源码就开始读代码。顺序错了。第一件事应该是看删过什么——git log --all --diff-filter=D,找出被删除的文件列表。

被删掉的东西长什么样:写死在 config/database.php 里的数据库密码,提交两周后改成读环境变量,但历史里还在;测试用的云厂商 AK/SK,上线前删了;内网 Redis 地址、跳板机 IP、临时管理员账号。

这是 .git 泄露比源码泄露严重得多的根本原因:源码泄露丢的是现在,历史泄露丢的是过去所有版本的现在。而人只会在“以后注意”,不会去改已经提交过的密码。

删掉一个文件不等于擦掉一段历史。密钥一旦进过版本库,就得当作已经泄露。

05第四层:从代码连到内网

这一层只做“范围确认”,不做后续动作。要确认的是:配置文件里的内网地址段、数据库连接串指向哪、对象存储的 AK/SK 有没有权限、有没有硬编码的测试账号。

边界很清楚——把泄露范围写清楚,报告就完成了。再往后一步就是另一件事,需要另一份授权。

06防守:三条能真正堵住的措施

1Nginx 层一条规则兜底:{{c:location ~ /\.(git|svn|hg)} 全部 deny,返回 404 而不是 403——403 等于告诉对方“这里本来有东西”。

2打包方式改掉。CI 里用 git archive 导出,不要用 rsync 把整个工作目录推到 web 根。这一条能消灭九成的 .git 泄露。

3密钥扫描进流水线,而且必须扫历史。gitleaks、trufflehog 都是开源的,配置半小时,能挡住后面几年。最后一个动作是轮换——扫出来的密钥全部换掉,只删文件没有用。

参考来源

OWASP WSTG v4.2 — WSTG-CONF-04 审查旧备份文件与未引用文件

CWE-538: Insertion of Sensitive Information into Externally-Accessible File or Directory

Git 官方文档 — git archive / gitattributes(导出与打包)

gitleaks / truffleHog 开源项目文档(密钥扫描)

NIST SP 800-123 Guide to General Server Security

本文为技术事实陈述与防护建议,全部案例基于授权测试与公开研究;不提供针对未修复系统的完整攻击链,不构成未授权测试的建议。

勒索病毒防护:从备份到运维,完整防御思路" 网络安全文章

勒索病毒防护:从备份到运维,完整防御思路"

本文提出勒索病毒防护完整思路,强调预防为先、备份兜底、应急闭环。事前通过权限最小化、补丁管理和钓鱼培训筑牢防线;备份采用3-2-1原则并定期演练;事中监控异常行为及时隔离;事后不盲目支付赎金,快速隔离溯源并复盘整改,将安全要求嵌入日常运维。
观初科技·企业客户专享|智赋安全-大模型浪潮下的安全运营变局—合作伙伴介绍" 网络安全文章

观初科技·企业客户专享|智赋安全-大模型浪潮下的安全运营变局—合作伙伴介绍"

本文为观初科技携手多家安全厂商举办的安全活动合作伙伴介绍,主题聚焦大模型浪潮下的安全运营变局。活动邀请PaloAltoNetworks、Thales、青藤云安全、亿格云、岘安科技及上海市信息安全测评认证中心,分享AI安全、数据安全、主机安全、SASE零信任及个人信息保护合规审计等议题,探讨AI驱动安全从被动响应向主动智能演进,助力企业构建主动智能安全运营体系。
2026“最美基层民警”候选人现场展示评审活动举行" 网络安全文章

2026“最美基层民警”候选人现场展示评审活动举行"

该报道介绍2026最美基层民警候选人现场展示评审活动在北京举行,37名候选人来自32个地方公安机关、4个垂管系统单位和移民管理机构,涵盖10余个警种部门。评审工作首次策划举办现场集中展示评审活动,通过优化评委构成、细化评审流程等举措确保公平公正。评审结束后将结合实地考察确定最终当选者名单,于2027年中国人民警察节期间发布。
评论:0   参与:  0