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

280 天前
 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 哈。

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

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

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

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

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

推荐一下 DO 的 config generator
https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhCN
YuukiHibiki
280 天前
.git 放在网站目录
location 也配置到能够访问到.git 目录
这算两个最基本的安全疏忽吧
lyxxxh2
280 天前
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