gcpwn war ein Tool, das ich selbst entwickelt habe, als ich versuchte, GCP zu erlernen, und das die neueren GRPC-Clientbibliotheken nutzt. Es besteht aus zahlreichen Enumerationsmodulen, die ich geschrieben habe, sowie Exploit-Modulen, die die Forschung anderer in diesem Bereich (z. B. Rhino Security) nutzen, sowie einigen bestehenden bekannten eigenständigen Tools wie GCPBucketBrute, um das Tool zu einem One-Stop-Shop für GCP-Tests zu machen . Während andere Exploit-Skripte im Allgemeinen nur einmal verwendet werden, speichert GCPwn sowohl Daten als auch Berechtigungen, während Sie Module durchlaufen , organisiert die Daten für Sie und verwendet sie wieder, um Ihnen das Leben in Bezug auf Pentesting-/Tracking-Berechtigungen zu erleichtern.
Autor: Scott Weston (@webbinroot), NetSPI
Erforderliche Abhängigkeiten: Siehe „Requirements.txt + Wiki-Installationshandbuch“.
Abhängigkeiten Hinweis: Hauptsächlich auf Kali Linux getestet; Docker-Installation über Dockerfile verfügbar
Dieses Tool richtet sich hauptsächlich an Pentester, diejenigen, die GCP-Sicherheit gerade erst erlernen, und Sicherheitsforscher im Allgemeinen.
Für Pentester: Wie oben dargestellt, automatisiert das Tool viele Skripte, die Sie normalerweise ausführen würden, und speichert Daten, um die Ausführung von Exploit-Modulen einfacher zu machen.
Für diejenigen, die GCP-Sicherheit gerade erst erlernen: Das Tool ist so eingerichtet, dass es einfach sein sollte, Ihr eigenes Modul über eine Pull-Anfrage hinzuzufügen, während Sie in den einzelnen Dienst eintauchen.
Für Sicherheitsforscher ermöglicht das Tool die Ausführung einer großen Anzahl von GCP-API-Aufrufen, und ich dokumentiere, wie das Tool im Hintergrund über ein lokales Tool wie Burp Suite als Proxy fungiert. Wenn Sie also enum_all
mit der Burp-Suite ausführen, die alle Anforderungen protokolliert, erhalten Sie mit einem Befehl Einblick in alle verschiedenen API-Endpunkte in allen verschiedenen Python-Bibliotheken. Das ist zumindest die Hoffnung, ich habe es teilweise mit Env-Variablen zum Laufen gebracht, falls jemand den Code fertig knacken kann :)
Sehen Sie sich das Wiki unter https://github.com/NetSPI/gcpwn/wiki an für:
Installationsanweisungen und Ordnereinrichtung : So richten Sie das Tool für die erstmalige Verwendung und die verwendeten Standardordner ein
Authentifizierungsverwaltung und Tokeninfo : Laden Sie Benutzer- und/oder Dienstanmeldeinformationen ein, um die Anmeldeinformationen einzurichten
Projekte verwalten und Ressourcendaten abrufen : So verwalten Sie Projekt-IDs und rufen Aufzählungsdaten aus SQLite-Tabellen ab.
Modul-Leitfaden : So rufen Sie ein Modul auf und tauchen ausführlich in jedes Modul ein
Modulerstellung : So fügen Sie Ihr eigenes Modul per Pull-Anfrage hinzu (In Bearbeitung – Zieldatum 15.09.2024)
Research Head Scratchers : Forschungsthemen/offene Fragen (in Bearbeitung – Zieldatum 22.09.2024)
Das Tool stellt automatisch die Standardausgabe „Tabelle“ ein. Das Tool unterstützt Tabellen, TXT und CSV. Wenn Sie Probleme mit Tabellen haben, können Sie die globalen Konfigurationen wie folgt ändern:
# See global configs global_configs # Set global configs for preferred output global_configs set std-output txt
Oder Sie können --txt
, --table
und/oder --csv
mit jedem modules run
übergeben, um die Standardausgabe zu ändern
modules run enum_buckets --txt
Die aufgezählten Daten werden in lokalen Tabellen in GCPwn gespeichert. Um die Tabellenausgabe anzuzeigen, führen Sie den Befehl aus
# See all tables data tables # See all table columns data tables--columns # Get all data back and export to CSV file data --columns column1,column2 --csv [OUTPUT_FILE]
Führen Sie das Modul enum_all
gefolgt von creds info
aus, um die neu aufgelisteten Berechtigungen anzuzeigen. Das Modul process_iam_bindings
“ gibt Ihnen dann eine TXT/CSV-Zusammenfassung der Richtlinienbindungen, sofern diese aufgezählt werden können, und analyze_vulns
versucht, fehlerhafte Rollen/Berechtigungen zu kennzeichnen. Siehe die allgemeinen Flaggen unten.
Alles auflisten (wählen Sie eines aus, das am besten passt)
# Quickest: Run all enumeration modules + testIAM Permissions modules run enum_all --iam # Longer: Run all enumeration modules + testIAM Permissions including ~9000 for projects/folder/org modules run enum_all --iam --all-permissions # Longer + Downloads: Run all enumeration modules + testIAM Permissions including ~9000 for projects/folder/org + download everyting modules run enum_all --iam --all-permissions --download
Nehmen Sie alle IAM-Richtlinienbindungen aus enum_all oder anderen oben genannten Modulen und geben Sie eine Zusammenfassung/Vuln-Analyse zurück
# Review Permissions User Has Thus Far creds info # Return Policy Summary from IAM Bindings if Applicable modules run process_iam_bindings [--txt] [--csv] # Analyze IAM Bindings + Other Items (like allUsers) if Applicable modules run analyze_vulns [--txt] [--csv]
fwd:cloudsec 2024: https://www.youtube.com/watch?v=opvv9h3Qe0s („GCPwn: Ein Pentesting-Tool für GCP – Scott Weston“)
Defcon 32 Cloud Village: https://www.youtube.com/watch?v=rxXyYo1n9cw
https://www.netspi.com/blog/technical-blog/cloud-pentesting/introduction-to-gcpwn-part-1/
Ich werde mir die Issues/Pulls für coole neue Sachen ansehen, abgesehen davon, dass ich einen Tagesjob habe, also gib mir mindestens 24 Stunden oder so :)
Wenn es sich um ein kleines Problem handelt, bevorzugen Sie für eine schnelle Lösung die Registerkarte „Problem“ über die Registerkarte „Probleme“.
Auf der Schulter von Giganten aufgebaut, wurde die Anerkennung einiger Codes und Ideen/Forschung inspiriert von:
Rhino-Sicherheit (https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/)
GCPBucketBrute (https://github.com/RhinoSecurityLabs/GCPBucketBrute)
VIEL Google-Dokumentation (https://cloud.google.com/python/docs/reference)