一個.git引發的慘案
- 2019 年 11 月 6 日
- 筆記
最近上線了一個小的程式,架構Linux+Apache+Mysql+PHP(Thinkphp3.2),做系統的時候只是考慮了一些基礎的安全比如csrf,sql注入等等,但是沒想到栽倒了在git上面,項目使用的是git版本控制器,當你拉取一個項目時候,在你的項目文件夾下面會自動的創建一個.git的隱藏文件,也算是git的驅動文件,有了它你就可以在你的本地使用git進行程式碼的管理了,之前做項目一直都是Thinkphp3.2,伺服器使用的Nginx從未發生過這樣的事情(因為Nginx做了驗證處理)
比如我們訪問一個網站的使用,http://xx/.git/index,之後就會自動下載一個

之後我們可以簡單的使用記事本打開一下

額….居然是你git程式碼管理器裡面的目錄結構,之後我們通過一個大神在github分享的一個用python寫的小程式,我們居然能下載下來整個項目的目錄結構

之後通過日誌分析,可以得到網站的一些管理員的帳號資訊,這樣你就可以得到了一些網站的關鍵資訊,至此你就可以登錄網站後台了
好了,說了這麼多,還是告訴大家怎麼解決這個問題了,其實一般注意一下就不會犯這麼低級的錯誤,但是也還好及時發現並修改
1、如果你的伺服器是apache,那麼你將這樣操作
(1)修改apache的配置文件(安裝目錄可能不同,你可以對照修改)
vim /etc/httpd/httpd.conf
1)首先要開啟重寫,然後
RewriteEngine on RewriteRule ^.git - [F,L]
這樣就ok了,你可以選擇
Apache通過配置.htaccess文件禁止訪問.git、.svn等目錄
或者像我一樣修改httpd.conf,因為我做了路由的重定向,所以選擇了修改配置文件

(2)重啟apache
/usr/local/apache2/bin/apachectl restart
如果你使用了Thinkphp5.0+或者laravel,那麼恭喜你,你可以不用擔心,因為目錄和public不在同一級(配置public的情況下)
2、如果你使用的是Nginx

這樣配置了重寫,那麼路由就根本找不到,所以也就不會出現那個問題了。
編程安全,防不勝防,菜是原罪。