最近公司的安全部门在扫描系统漏洞的时候发现了我们系统的一个漏洞,通过 GitHack 进行扫描,然后download 了前端的静态文件,第一次了解这个 GitHack,有点好奇,专门找了 github 库看了一下,其实使用起来蛮简单的,官方 readme 已经详细给出了操作步骤,这里不在叙述 https://github.com/BugScanTeam/GitHack
上图是公司安全部门给出的漏洞截图
在发现上述漏洞后,立马着手排查问题,由于我们的域名是 通过公网 -> F5 -> Ng -> 服务器的。其中 公网到 F5 的VIP 是不放文件的,那么这个.git 文件只能在 Ng 和 服务器中,所以第一步就是排查 ng 机器上是否有遗漏的.git 文件。在机器上 find了一把(ng 机器 文件少),查找后没有,那么确定是在服务器上了。
由于我们的服务器是 docker 启动的,ng 直接打到 容器内部,所以定位很简单,直接进入到 容器内部去排查,发现确实有一个 .git 文件。确定好了目标,就想办法处理。
我们的发版机制是通过 Jenkins build 镜像到 target 机器上,所以问题出错 也只能在 build 环节。
在 dockerfile 文件中有如下操作:
COPY . /usr/share/nginx/html/
这里会把 build 目录下的文件全部 copy 到 nginx 代理的目录下,所以 我们只要在这里把 .git 不要 copy 到 /usr/share/nginx/html/ 就可以了 当然这里的 dockerfile 文件可以指定文件一个一个 copy,不过太麻烦了。所以我们使用 docker的 ignore 文件来处理。 在 根目录下,新建 .dockerignore 文件。
写入以下内容:
.git
重新 发版,就ok 了。