看我如何下載印度最大電信服務商的原始碼
近期,Snapchat曾發生過一次 ofollow,noindex" target="_blank">原始碼洩漏事件 ,在此次事件中攻擊者從Snapchat網站上下載了完整的網站原始碼,並將其上傳到了GitHub上。在過去的幾年裡,很多網站都存在錯誤配置的問題,而且這些安全問題都會被攻擊者所利用。除此之外,由於Web開發的門檻相對來說比較低,所以很多經驗不夠豐富的開發人員很可能在Web開發的過程中洩漏一些機密資料,比如說Git程式碼庫的金鑰元件,這個金鑰一旦洩露,也就意味著任何人都可以直接訪問程式碼庫中的敏感原始碼、訪問金鑰以及密碼等等。
所以最近一段時間,我一直都在研究Git錯誤配置方面的問題,那麼在這篇文章中,我將告訴大家我如何訪問並下載的印度最大電信服務商的原始碼。
Git是什麼?
Git是一種版本控制系統(VCS),它可以幫助開發人員跟蹤計算機檔案的修改情況,並與網路上的其他夥伴協同工作。目前,Git主要用於軟體開發過程中的原始碼管理,但是它還可以用來跟蹤其他檔案的修改情況。在Git的幫助下,開發人員可以管理原始碼的版本,並通過fork和branch的形式來跟蹤程式碼的修改。
如果一個應用程式綁定了一個錯誤配置的Git目錄,並且公開可訪問(暴露在外)的話,那麼這個目錄應該是下面這樣的:
為了直接從目錄中遞迴下載每一個檔案,我們這裡需要用到wget,即:
wget –r https://www.example.com/.git
執行之後,也就是當你下載了完整的.git目錄之後,你還需要利用git命令來獲取git物件,這一步大家可以參考這兩份手冊:【 參考資料一 】【 ping-git-data-from-misconfigured-web-servers/" rel="nofollow,noindex" target="_blank">參考資料二 】
技術細節
在開始之前,如果各位不熟悉git以及git命令的話,我建議大家先閱讀一下上面的參考資料。
接下來,我們一起看一看如何去實現這種原始碼下載攻擊。
子域名的重要性其實和主域名的是一樣的,這也就是為什麼很多網路偵查活動中需要進行子域名列舉的原因之一。因為一般來說,git錯誤配置不會只發生在主域名身上,旗下的子域名同樣也會存在這樣的問題。所以,為了找出所有存在git錯誤配置的域名、子域名或公司組織,我需要結合子域名列舉技術和.git目錄下載技術才能實現。這裡我給大家推薦一款優秀的開源子域名列舉工具- Sublist3r ,這款工具可以利用不同的源來列舉主域名下的子域名,並給使用者提供子域名列表。除此之外,還有一款名叫 Git-dumper 的工具,這款工具可以檢查並下載公開可訪問的Git目錄。接下來,我通過指令碼把這兩個工具繫結在了一起,然後開發出了git-domian.py,它可以幫我做以下三件事情:
1、 git-domain.py需要一份檔案作為輸入引數,這個檔案要包含所有的主域名(列表,按行分隔)。 2、 它會遍歷每一行域名,然後找出對應的子域名,並檢測相應的.git目錄是否暴露在外。 3、 如果公開可訪問,那麼它會遞迴下載特定子域名對應的完整git目錄,然後將其存在本地主機中。
這就是我要做的事情:收集設立了漏洞獎勵計劃或漏洞披露政策的公司名單,然後收集相應公司的域名列表,然後把它們傳入到git-domain.py中:
沒錯,這份主域名列表中也包含印度最大電信服務商的域名,而且我也成功地下載到了完整的官網原始碼。值得一提的是,他們的子域名也存在類似的錯誤配置。
緩解方案
Web伺服器管理員或開發者們需要確保.git目錄沒有被索引,並且所有的目錄、子目錄和全部檔案都無法使用伺服器許可權規則來直接訪問。除此之外,建議各位使用.gitignore檔案來確保敏感檔案能夠被隱藏。緩解這種攻擊的最簡單的辦法就是禁止訪問.git目錄:
<DirectoryMatch“^/.*/\.git/”> Requireall denied </DirectoryMatch>
大家還等什麼?趕緊看看自家屋頂有沒有漏雨吧!
*參考來源: medium ,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM