请各位站长注意 .git 目录安全隐患

356 天前
ahu  ahu

简单搜了一下,貌似还没人在 V2 发过相关话题?


刚才正在搬砖,突然收到一个新邮件提醒(全英文的)。下意识以为是垃圾邮件,但并不是。

仔细一看,原始是我管理的某个网站被 Repo Lookout 扫出了 .git 目录安全隐患。具体而言就是,该网站下的这 2 个 URL 路径是可以直接被任何人访问的:

http://网站域名/.git/config

http://网站域名/.git/logs/HEAD

Repo Lookout 就是从这个文件里找到我的邮箱,给我发了一封告警邮件。

虽然这个问题暂时没要命,但的确能够看到不少相对敏感的信息。你也赶紧去检查一下吧!


如何解决?在他们网站都已经介绍了,去看看便知。简言之,就是设置你的 web server 限制 .git 路径访问

Nginx 配置加上

location ~ /\.git {
    deny all;
}

location ~ /\.git {
    return 404;
}

Apache 配置加上

<DirectoryMatch "/\.git">
    Require all denied
</DirectoryMatch>
<DirectoryMatch "/\.git">
    Deny from all
</DirectoryMatch>

Caddy 配置加上

respond /.git* 403

respond /.git* 404

最后记得修改完配置后要重启 web server 哈。

6349 次点击
所在节点   信息安全  信息安全
29 条回复
drymonfidelia
drymonfidelia
356 天前
纯静态网站还没用 webpack 之类的打包工具吗,实在想不到 .git 出现在 wwwroot 应该有问题吧
crysislinux
crysislinux
356 天前
@drymonfidelia 古时候很多人是直接在服务器 git pull 的,尤其是 PHP 这种文件到位就能跑的
rekulas
rekulas
356 天前
这样的非盈利组织真是令人敬佩
cdlnls
cdlnls
356 天前
一些 github 上面的项目,web 相关的项目,大多数都是放在一个单独的目录下,比如/html 或者/src 。

如果直接 index.html 在跟目录下,很多人代码 clone 下来直接就设置成根目录了,.git 就被暴露出来了,在项目里面额外加一层目录就是为了加了一道防线。

几年前看日志的时候发现过这种请求日志,从那以后,只要是类似这种项目,都会额外加一层目录。

我一般是只要路径中带点符号,一律 ban 掉。
ysc3839
ysc3839
356 天前
最好是 http 服务器直接禁止访问“.”开头的文件,不应该只禁止.git 。同时 package.json 以及 composer.json 等文件最好也禁止访问。
mingl0280
mingl0280
356 天前
为什么你会把.git 放进网站目录……
likayi
likayi
356 天前
@mingl0280 git clone
crackidz
crackidz
356 天前
因为很少会有人直接 git clone 下来一个静态网站....
szdosar
356 天前
受教了。谢谢 up 主提供信息。
yc8332
356 天前
有点安全意识的人谁会直接用 git 去拉代码?不都是发布系统搞吗
Xc1Ym
356 天前
git 文件泄露是非常常见的漏洞,属于源码泄露的一种,同时还仍需注意 svn 、idea 、DS_Store 、网站备份文件、web.xml 、js.map 等
malaohu
356 天前
不仅仅是 Git

location ~ /(\.user\.ini|\.ht|\.git|\.svn|\.project|LICENSE|README\.md) {
deny all;
}
4Et5ShxMIq58n6Lr
356 天前
正常情况下 .git 不会放到发布目录下吧?
mingl0280
356 天前
@likayi 正确做法:git clone 以后选择性将文件链接/复制到网站目录(大部分 IDE 都可以做到,webstorm 就可以)
错误做法:直接 git clone 到网站目录然后用 IDE 打开
Jack927
356 天前
不只是 git ,web 目录直接 .开头的目录都禁止访问完事。
proxytoworld
356 天前
以前面试过,怎么通过.git 还原源码
Jesmora
356 天前
这个是吧 git 下来的整个目录当 wwwroot 了吧,被编译过的项目很少出现这个问题
A1exL
356 天前
# . files
location ~ /\.(?!well-known) {
deny all;
}

推荐一下 DO 的 config generator
https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhCN
YuukiHibiki
356 天前
.git 放在网站目录
location 也配置到能够访问到.git 目录
这算两个最基本的安全疏忽吧
lyxxxh2
356 天前
php:
.git 正常都在 public 。
tp3 这种老年代产品才会,网站目录 = 项目根目录。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1036220

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX