.git 目錄外洩自我檢測、修補與通報指南

注意:僅限用於測試自己的網站,勿測試非屬於自己或非經過授權的網站或主機,以免觸犯刑法妨害電腦使用罪。
快速自我檢測
打開瀏覽器,把網域換成你自己的,輸入以下路徑:
1 https://你的網站/.git/HEAD如果瀏覽器顯示的內容是
ref: refs/heads/main或者其他 git 資訊,代表你的 .git 目錄底下的資料可能都已經外洩,請立刻往下讀第五、六節。
我們為什麼寫這篇給串接廠商
綠界科技資安團隊日常會查看漏洞通報平台 HITCON ZeroDay 公布的漏洞,其中一種很嚴重的資安問題,要發現及改善很簡單,卻一直有網站在平台被通報,就是 .git 目錄外洩。

可以從圖片看到台灣有三百多個網站都被通報此弱點,這還是目前已知的數量而已….
.git 外洩最麻煩的地方在於它一次把原始碼和藏在原始碼裡的綠界介接金鑰(HashKey/HashIV)、特店編號、資料庫密碼全部送出去,攻擊者拿到後,可以直接取得所有金流、物流、電子發票等資訊。
我們寫這篇是為了讓非工程師也能簡單做的自我檢測,讓您知道怎麼查。
什麼是 .git 目錄外洩
在講 .git 外洩之前先講一下 Git,Git 是目前軟體開發最普及的版本控制系統,工程師用它記錄程式碼的每一次修改,誰在什麼時候改了哪些檔案都查得到,需要時可以回到任何一個歷史版本,多人協作時也靠它合併彼此的改動。你可能聽過的 GitHub、GitLab,就是建立在 Git 之上的程式碼代管服務。
Git 能做到這些,靠的是它在專案資料夾裡自動建立的隱藏資料夾 .git。這個資料夾記錄了專案所有的版本歷史與每個版本的檔案內容,等於整個專案的原始碼加上完整修改紀錄的備份。它本來只該待在你的開發電腦或部署主機上,絕不該對外公開;一旦部署時把 .git 一起放上網站、讓任何人都能透過網址存取,就是所謂的 .git 目錄外洩。
為什麼可以被網路上的人存取?最常見的原因很單純:
- 直接在正式主機上用
git clone/git pull把整包程式碼拉下來部署,.git 也就一起被放進了網站根目錄。 - 用 FTP/rsync 上傳程式碼時,沒有排除 .git 資料夾。
這不是 Git 本身的問題,是在上版的時候沒注意到這個問題或不知道上傳 .git 的影響,而造成嚴重的漏洞。
為什麼一個資料夾外洩等於整包原始碼外洩
很多人以為伺服器要開目錄列表(Directory Listing)攻擊者才有辦法拿到東西,但其實攻擊者根本不需要看到清單,攻擊者從 /.git/HEAD 開始,慢慢找就有機會把整個原始碼還原出來。

只要 .git 可以被 HTTP 存取,開源的自動化工具幾分鐘就能把整份原始碼和歷史重建出來。
外洩之後的連鎖傷害
不只是你的原始碼外洩,可能還包含了資料庫帳號密碼、雲端 Token、AI Token 以及綠界的 HashKey/HashIV,即使你後來把金鑰從程式碼裡刪掉了,只要它曾經被 commit 過,就仍然躺在歷史裡撈得回來。
駭客取得 .git 資料之後可能有以下風險:
- 連線到你的資料庫把個資
- 訂單資訊全部偷光
- 查詢綠界 API 來取得所有訂單,進行販售或者詐騙
- 大量消耗 AI Token 讓你的帳單爆炸
- 從你的原始碼找到更多漏洞
- 取得你主機的最高權限。

攻擊者使用工具後可以輕鬆點兩下就打包你的網站原始碼
為什麼你非得自己做一次檢測不可
對金流廠商,這是會直接損失金錢的問題
綠界的交易完整性基於 HashKey/HashIV 的保密性及對交易參數運算來把關,一旦 HashKey/HashIV 外流,攻擊者就能自己算出正確的結果,於是攻擊者可以:
- 利用 API 來查詢金流、物流訂單,通常物流都有地址或聯絡資訊,消費者的個資可能就因此外洩。
- 竄改訂單金額後重算 CheckMacValue,讓竄改後的請求仍然通過驗證。
跟著一起外洩的通常還有:資料庫密碼、其他第三方 API key,足以讓攻擊者橫向擴張、接管資料庫,竊取姓名、電話、地址等個資。
如果攻擊者拿到原始碼,利用漏洞後進而在你的網站植入惡意 JavaScript,就能劫持導轉、偽造頁面竊取消費者輸入的卡號。
動手前必讀:法律與授權界線
在教你任何自我檢測方法之前,先把界線劃清楚,這對你、對我們都重要:
- 只能檢測你自己擁有、或已取得書面授權的網域與主機。
- 未經授權去掃描、下載他人的 .git,在台灣可能觸犯刑法妨害電腦使用罪。
- 不要順手去掃你的客戶、合作夥伴或外包商的網站,若你發現第三方有外洩,正確做法是通報對方,不要嘗試下載對方的 .git 資料。
本文所有指令,都預設你是在自家網站上執行。
1 | # 抓 HEAD |

外洩常見的內容:ref: refs/heads/main 或 master
1 | # 抓 config |

外洩時會看到 [core]、[remote “origin”]、[branch “master”]、url = … 這類資訊
自動化與大量資產的檢測,就交給現成的開源工具與瀏覽器擴充套件,不需要自己寫腳本,文章最後會分享幾個好用的工具。
中了怎麼辦?發現外洩的修補與處置 SOP
只要 .git 曾經對外可存取,就一律假設它已經被駭客下載,不要心存僥倖,駭客的自動化爬蟲一年 365 天都在掃這些路徑,只要掃到就有很大的機會可以打下網站、獲取敏感資訊。
立即動作
- 封鎖:從網站根目錄移除 .git,並用下方的方法根治。
- 更換所有可能外洩的祕密,例如綠界的 HashKey/HashIV、資料庫密碼、各種 API key、後台帳密,全部換掉。
- 查存取紀錄:翻 access log,看
/.git/是否已被人連續請求(一連串對 .git 子路徑的請求,基本上就等於已被 dump)。
刪檔不等於刪歷史:為什麼一定要換 Key 及更換帳號密碼
你把金鑰從最新版程式碼裡刪掉,它仍然留在歷史 commit 裡,一樣撈得回來。唯一可靠的止血,是讓那個外洩的值失效。改寫歷史只是輔助手段,而且救不回別人早已下載的副本,也救不回已被快取的內容。所以更換金鑰一定要做、而且要先做。
根治:改變部署方式,讓 .git 根本不會上線
止血之後,要根除病灶,否則下次部署又會重演:
- 正式主機不要
git clone/git pull。改用 CI/CD 只部署建置產物,例如git archive、rsync --exclude='.git'、Docker 的.dockerignore排除 .git。 - 加上部署前檢查(pre-deploy hook)確認產物不含 .git。
- 防復發:在
pre-commit掛上機敏資訊掃描、在 CI 加入 secret scanning 閘門,並定期複檢/.git/HEAD。
給綠界串接廠商:發現外洩後的通報窗口與後續
什麼時候、如何通報綠界
一旦你確認(或高度懷疑)HashKey/HashIV、MerchantID 等金流憑證可能外洩,請立即聯繫綠界:
- 一般賣家:填寫表單聯絡客服。
- 特約賣家:聯絡您專屬業務,讓業務專人為您追蹤事件。
同步向綠界申請重置介接金鑰並完成更換。
事前先備妥這些資料,通報會快很多
- 您的聯絡資訊
- 受影響的網站清單
- 外洩內容範圍 (原始碼、金鑰、資料庫連線資訊、後台登入密碼)
- 已處理措施 (移除 .git、追查 log 紀錄)
常見問題 FAQ
Q:我已經關掉目錄列表了,還會外洩嗎?
A:會。攻擊者不需要看到檔案清單,光從 /.git/HEAD 這個固定路徑就能逐檔還原。
Q:我把金鑰從程式碼裡刪掉、也把 .git 刪了,這樣夠嗎?
A:不夠。金鑰只要曾被 commit,歷史裡還在;唯一可靠的止血是換 Key,讓舊憑證失效。
Q:撈到的金鑰看起來像綠界的,就一定是事故嗎?
A:先比對。綠界的測試金鑰是公開的,只含公開測試金鑰不算憑證事故,但撈到正式金鑰、或把測試金鑰當正式在跑,就要立即處置,測試金鑰請參考綠界開發者平台的測試介接資訊。
Q:我找不到當時的 access log,怎麼判斷有沒有被抓?
A:log 已輪替或過期時,無法證明沒被抓,就應直接假設已外洩並完成輪替。
Q:我可以順手幫客戶/供應商掃一下他們的網站嗎?
A:不行。未經授權掃描可能違法,請改為通報對方。
可以用哪些開源工具
以下都是我覺得很好用的 GitHub 開源工具,滲透測試的時候也經常使用。
再次提醒:檢測僅能用於你自有或已獲授權的資產。
還原/驗證(PoC,僅限自有或授權資產)
| 工具 | 說明 |
|---|---|
| DotGit | 開源瀏覽器擴充,正常瀏覽網站時,會自動幫你偵測該站是否暴露 .git,並在發現時通知你。 (注意:檢查別人網站是否 .git 洩漏可能有違法之虞) |
| GitHacker | 能還原出歷史 Commit,便於做機敏資訊回溯。 |

工具 GitHacker Demo
寫在最後
.git 外洩只是眾多資安漏洞的其中一種,過時的套件、注入漏洞、錯誤的主機設定,同樣可能讓消費者個資與交易資料暴露在風險中。完成本文的自我檢測後,建議把定期檢視網站安全當成例行維運的一部分;若想更完整地確認網站是否還有其他漏洞,也可以參考綠界的資安檢測服務,讓資安團隊協助您在駭客竊取資料之前先行修補漏洞。
本文由綠界科技資安團隊 Walter 撰寫,僅供廠商作技術性自我檢測參考,請勿用於非法測試。
同步發佈於綠界科技EC商家學院







/3.webp)

