GCPBucketBrute
用於枚舉 Google 儲存桶、確定您對它們擁有哪些存取權限以及確定它們是否可以進行權限升級的腳本。
- 此腳本(可選)接受 GCP 使用者/服務帳戶憑證和關鍵字。
- 然後,將從該關鍵字產生排列列表,然後將其用於掃描具有這些名稱的 Google 儲存桶是否存在。
- 如果提供了憑證,則大多數枚舉仍將在未經身份驗證時執行,但對於透過未經身份驗證的枚舉發現的任何儲存桶,它將嘗試使用TestIamPermissions API 和提供的憑證來枚舉存儲桶權限。這將有助於找到在經過身份驗證時可存取但未經身份驗證時不可存取的儲存桶。
- 無論是否提供憑證,腳本都會在未經身份驗證的情況下嘗試使用 TestIamPermissions API 枚舉儲存桶權限。這意味著,如果您不輸入憑證,則只會顯示未經身份驗證的使用者擁有的權限,但如果您輸入憑證,您將看到經過驗證的使用者與未經身份驗證的使用者相比具有哪些存取權限。
- 警告:如果提供了憑證,您的使用者名稱可能會在您發現的任何儲存桶的存取日誌中洩漏。
TL;DR 總結
- 給定一個關鍵字,該腳本會根據該關鍵字產生的多個排列來列舉 Google 儲存桶。
- 然後,任何發現的桶子都會被輸出。
- 然後,您被授予的任何已發現儲存桶的任何權限(如果有)都會被輸出。
- 然後,腳本將檢查這些權限是否有權限升級(storage.buckets.setIamPolicy),並輸出任何有趣的內容(例如公開可列出、公開可寫、經過身份驗證的可列出、權限升級等)。
要求
- Linux/OS X
- Windows 僅適用於未經驗證的掃描。腳本使用子進程模組的方式有問題,因為使用經過驗證的 Google 用戶端時會失敗。
- Python3
- 點3
安裝
git clone https://github.com/RhinoSecurityLabs/GCPBucketBrute.git
-
cd GCPBucketBrute/
-
pip3 install -r requirements.txt
或python3 -m pip install -r requirements.txt
用法
首先,確定要用於使用者帳戶、服務帳戶或未經身份驗證之間的枚舉的身份驗證類型。如果您使用服務帳戶,請透過-f
/ --service-account-credential-file-path
參數提供私鑰的檔案路徑。如果您使用使用者帳戶,請勿提供身份驗證參數。然後,系統將提示您輸入使用者帳戶的存取權杖以存取 GCP API。如果要完全未經身份驗證進行掃描,請傳遞-u
/ --unauthenticated
參數以隱藏身份驗證提示。
- 在完全未經身份驗證的情況下使用關鍵字“test”掃描儲存桶:
python3 gcpbucketbrute.py -k test -u
- 使用關鍵字「test」掃描儲存桶,同時使用服務帳戶(私密金鑰儲存在 ../sa-priv-key.pem)進行驗證,將結果輸出到目前目錄中的 out.txt:
python3 gcpbucketbrute.py -k test -f ../sa-priv-key.pem -o ./out.txt
- 使用關鍵字「test」掃描儲存桶,使用使用者帳戶存取令牌,執行 10 個子進程而不是 5 個:
python3 gcpbucketbrute.py -k test -s 10
可用參數
-k
/ --keyword
- 此參數用於指定將使用哪個關鍵字來產生排列。這些排列將在 Google Storage 中搜尋。
-
--check
- 此參數與
-k
/ --keyword
互斥,並接受單一字串。它允許您檢查特定儲存桶的權限,而不是根據關鍵字產生排列清單。可以重複此操作以檢查多個桶。信用:@BBerastegui
-
--check-list
- 此參數與
-k
/ --keyword
和--check
互斥。它允許您檢查檔案中儲存桶列表的權限。它們應該在文字檔案中每行列出一個。要從標準輸入讀取,請傳遞-
作為檔案名稱。
-
-s
/ --subprocesses
- 此參數指定將使用多少個子程序進行儲存桶枚舉。預設值為 5,值設定得越高,枚舉速度就越快,但每秒向 Google 發出的請求將會增加。這些本質上是線程,但腳本使用子進程而不是線程來並行執行。
-
-f
/ --service-account-credential-file-path
- 您可以在該參數中指定要用於對 Google Storage 進行驗證的 GCP 服務帳戶的私密金鑰檔案的路徑。這是可選的。如果您想改用存取令牌,請省略此參數,系統將提示您輸入令牌,這樣它就不會儲存到您的命令列歷史記錄中。更多資訊請見:https://google-auth.readthedocs.io/en/latest/user-guide.html#service-account-private-key-files 和此處:https://google-auth.readthedocs .io/ en/latest/user-guide.html#user-credentials
-
-u
/ --unauthenticated
- 此參數強制進行未經身份驗證的枚舉。使用此標誌,系統將不會提示您輸入憑證,並且不會檢查有效儲存桶的經過驗證的權限。
-
-o
/ --out-file
- 此參數可讓您指定要輸出結果的日誌檔案的(相對或絕對)檔案路徑。如果該文件尚不存在,則將建立該文件;如果該文件已存在,則將其附加到該文件。
-
-w
/ --wordlist