背景介紹:

對于漏洞賞金獵人,GitHub 存儲庫可以發現各種有用的信息,并不是只有開源目標才會出現問題,有時,企業/組織成員及其開源計劃會錯誤地披露可用于對付目標公司的信息。本文將為你提供各種掃描 GitHub 存儲庫中敏感信息的方法和工具,以助你最大化發現漏洞。

最大化Cloning:

你完全可以只在 github.com 網站上進行研究,但是為了更好的進行本地測試,建議克隆每個目標庫。@mazen160 的 GitHubCloner 就是一個很棒的工具。它用起來非常簡單:

$ python githubcloner.py --org organization -o /tmp/output

靜態分析

在開始靜態分析之前,真正理解目標項目至關重要。白帽 @Jobert 會建議在尋找漏洞之前應對目標有很好的了解。

人工分析:

“learn to make it, then break it”這句話適用于人工分析。如果你能學習一門編程語言,你就能夠理解要采取和避免的安全預防措施。

一旦熟悉了目標及其架構,就可以開始尋找感興趣、熟悉或知道開發人員經常出錯的關鍵字。

以下是在第一次‘泛泛’尋找期間使用的一些搜索詞的基本列表:

API and key. (Get some more endpoints and find API keys.)tokensecretTODOpasswordvulnerable ??http:// & https://

另外還會關注:

CSRFrandomhashMD5, SHA-1, SHA-2, etc.HMAC

當你習慣了某些漏洞類型時,就會確切地知道在特定語言中尋找什么,例如,當在 Java 中尋找時序泄漏時,我知道 Arrays.equals() 和 HMAC 會共同導致該漏洞。

另一個關鍵步驟是查看提交歷史記錄,你會從這些歷史提交中收集到的信息量感到驚訝。我曾見過貢獻者錯誤地認為他們已經刪除了憑據,而他們仍在提交歷史記錄中。由于 git 的歷史,我發現了仍在運行的古老端點。

工具:

在執行 Python 項目時使用的主要工具是 Bandit

Bandit 會識別常見問題,但也會返回誤報結果。所以請謹慎使用。
$ bandit -r path/to/your/code -ll

如果你想在項目中查找過時的 Python 模塊,請將 requirements.txt 的內容粘貼到 https://pyup.io/tools/requirements-checker/ 中,這將顯示指定版本的模塊中是否存在任何安全問題。

Snyk.io 是一個用于檢查依賴項的出色工具,該平臺支持多種語言。


對于信息偵察,許多研究人員建議使用 Gitrob,此工具將在公共 GitHub 存儲庫中查找敏感信息。

$ gitrob analyze acme,johndoe,janedoe

要查找API 密鑰、令牌、密碼等字符串,可以使用 truffleHog

$ truffleHog https://github.com/dxa4481/truffleHog.git

如果你正在尋找一個一體化的查找器,@anshuman_bh 的 git-all-secrets 是款適合的工具。該工具將多個開源敏感信息查找器組合成一個大工具。對于 Ruby on Rails 應用程序,推薦 Brakeman。Brakeman 是一個靜態分析安全掃描器,可以在代碼中發現大量的各種安全問題。 另外使用 Gerben Javado 的 LinkFinder 在存儲庫的 JS 文件中查找?端點?。

$ python linkfinder.py -i 'path/to/your/code/*.js' -r ^/api/ -o cli

報告你的發現:

當涉及到漏洞賞金時,請仔細閱讀目標賞金計劃的政策,很少有程序通過 GitHub 接受報告,請聯系安全團隊,或者使用漏洞賞金平臺,例如 HackerOne 或 BugCrowd

順帶說一句,白盒審計的一個很酷的事情,由于你可以訪問代碼,因此能夠更容易地提出修復建議或提交補丁。加油吧,騷年~ ??