
Black-box Kubernetes-Angriffsflächenerkennungstool, das mit signaturbasiertem Scannen nach ungesicherten Clustern, exponierten Dashboards und Fehlkonfigurationen sucht.
KubeStalk ist ein Tool, um Kubernetes und die damit verbundene Infrastruktur zur Angriffsfläche aus einer Black-Box-Perspektive zu entdecken. Dieses Tool ist eine Community-Version des Tools, das während Project Resonance - Wave 9 verwendet wurde, um nach ungesicherten Kubernetes-Clustern im Internet zu suchen.
Das folgende GIF zeigt die Verwendung des Tools:

KubeStalk ist in Python geschrieben und benötigt die Bibliothek requests.
Um das Tool zu installieren, kann das Repository in ein beliebiges Verzeichnis geklont werden:
git clone https://github.com/redhuntlabs/kubestalk
Nach dem Klonen muss die Bibliothek requests mittels python3 -m pip install requests installiert werden oder:
python3 -m pip install -r requirements.txt
Alles ist eingerichtet und das Tool kann direkt verwendet werden.
Eine Liste der vom Tool unterstützten Befehlszeilenargumente kann mit der Option -h angezeigt werden.
$ python3 kubestalk.py -h
+---------------------+
| K U B E S T A L K |
+---------------------+ v0.1
[!] KubeStalk by RedHunt Labs - A Modern Attack Surface (ASM) Management Company
[!] Author: 0xInfection (RHL Research Team)
[!] Continuously Track Your Attack Surface using https://redhuntlabs.com/nvadr.
usage: ./kubestalk.py <url(s)>/<cidr>
Required Arguments:
urls List of hosts to scan
Optional Arguments:
-o OUTPUT, --output OUTPUT
Output path to write the CSV file to
-f SIG_FILE, --sig-dir SIG_FILE
Signature directory path to load
-t TIMEOUT, --timeout TIMEOUT
HTTP timeout value in seconds
-ua USER_AGENT, --user-agent USER_AGENT
User agent header to set in HTTP requests
--concurrency CONCURRENCY
No. of hosts to process simultaneously
--verify-ssl Verify SSL certificates
--version Display the version of KubeStalk and exit.
Um das Tool zu verwenden, können ein oder mehrere Hosts an das Skript übergeben werden. Alle an das Tool übergebenen Ziele müssen der RFC 3986 entsprechen, d.h. sie müssen ein Schema und einen Hostnamen (und ggf. einen Port) enthalten.
Eine grundlegende Verwendung ist unten dargestellt:
$ python3 kubestalk.py https://███.██.██.███:10250
+---------------------+
| K U B E S T A L K |
+---------------------+ v0.1
[!] KubeStalk by RedHunt Labs - A Modern Attack Surface (ASM) Management Company
[!] Author: 0xInfection (RHL Research Team)
[!] Continuously Track Your Attack Surface using https://redhuntlabs.com/nvadr.
[+] Loaded 10 signatures to scan.
[*] Processing host: https://███.██.██.██:10250
[!] Found potential issue on https://███.██.██.██:10250: Kubernetes Pod List Exposure
[*] Writing results to output file.
[+] Done.
HTTP-Anfragen können mit den Optionen -t (zur Angabe von HTTP-Timeouts), -ua (zur Angabe benutzerdefinierter User-Agents) und --verify-ssl (zur Überprüfung von SSL-Zertifikaten bei Anfragen) feinabgestimmt werden.
Die Anzahl der gleichzeitig zu scannenden Hosts kann mit der Option --concurrency gesteuert werden. Der Standardwert ist 5.
Die Ausgabe wird in eine CSV-Datei geschrieben und kann mit der Option --output gesteuert werden.
Ein Beispiel der CSV-Ausgabe in Markdown-Darstellung ist unten aufgeführt:
Das Tool ist unter der BSD 3-Clause-Lizenz lizenziert und befindet sich derzeit in Version v0.1.
Weitere Informationen zu unserer Attack Surface Management-Plattform finden Sie unter NVADR.
| host | path | issue | type | severity |
|---|
https://█.█.█.█:10250 | /pods | Kubernetes Pod List Exposure | core-component | vulnerability/misconfiguration |
https://█.█.█.█:443 | /api/v1/pods | Kubernetes Pod List Exposure | core-component | vulnerability/misconfiguration |
http://█.█.██.█:80 | / | etcd Viewer Dashboard Exposure | add-on | vulnerability/exposure |
http://██.██.█.█:80 | / | cAdvisor Metrics Web UI Dashboard Exposure | add-on | vulnerability/exposure |