最近公司的安全部門在掃描系統漏洞的時候發現了我們系統的一個漏洞,通過 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 了。