
Herramienta de descubrimiento de superficie de ataque Kubernetes de caja negra que sondea clústeres no seguros, paneles expuestos y configuraciones incorrectas mediante escaneo basado en firmas.
KubeStalk es una herramienta para descubrir la superficie de ataque relacionada con Kubernetes y su infraestructura desde una perspectiva de caja negra. Esta herramienta es una versión comunitaria de la herramienta utilizada para sondear clústeres de Kubernetes no seguros en internet durante Project Resonance - Wave 9.
El siguiente GIF muestra el uso de la herramienta:

KubeStalk está escrito en Python y requiere la librería requests.
Para instalar la herramienta, puedes clonar el repositorio en cualquier directorio:
git clone https://github.com/redhuntlabs/kubestalk
Una vez clonado, necesitas instalar la librería requests usando python3 -m pip install requests o:
python3 -m pip install -r requirements.txt
Todo está configurado y puedes usar la herramienta directamente.
Se puede mostrar una lista de los argumentos de línea de comandos admitidos por la herramienta usando la bandera -h.
$ 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>
Argumentos requeridos:
urls Lista de hosts a escanear
Argumentos opcionales:
-o OUTPUT, --output OUTPUT
Ruta de salida para escribir el archivo CSV
-f SIG_FILE, --sig-dir SIG_FILE
Ruta del directorio de firmas a cargar
-t TIMEOUT, --timeout TIMEOUT
Valor de tiempo de espera HTTP en segundos
-ua USER_AGENT, --user-agent USER_AGENT
Cabecera de agente de usuario a establecer en las peticiones HTTP
--concurrency CONCURRENCY
Número de hosts a procesar simultáneamente
--verify-ssl Verificar certificados SSL
--version Mostrar la versión de KubeStalk y salir.
Para usar la herramienta, puedes pasar uno o más hosts al script. Todos los objetivos pasados a la herramienta deben cumplir con RFC 3986, es decir, deben contener un esquema y un nombre de host (y puerto si es necesario).
Un uso básico es el siguiente:
$ 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.
Las peticiones HTTP se pueden ajustar usando -t (para indicar tiempos de espera HTTP), -ua (para especificar agentes de usuario personalizados) y --verify-ssl (para validar certificados SSL al hacer las peticiones).
Puedes controlar el número de hosts a escanear simultáneamente usando la bandera --concurrency. El valor predeterminado es 5.
La salida se escribe en un archivo CSV y se puede controlar con la bandera --output.
Un ejemplo de la salida CSV renderizada en markdown es el siguiente:
La herramienta está licenciada bajo la Licencia BSD de 3 Cláusulas y actualmente se encuentra en la v0.1.
| host | ruta | problema | tipo | severidad |
|---|
https://█.█.█.█:10250 | /pods | Exposición de lista de pods de Kubernetes | componente-central | vulnerabilidad/configuración incorrecta |
https://█.█.█.█:443 | /api/v1/pods | Exposición de lista de pods de Kubernetes | componente-central | vulnerabilidad/configuración incorrecta |
http://█.█.██.█:80 | / | Exposición del panel de visualización de etcd | complemento | vulnerabilidad/exposición |
http://██.██.█.█:80 | / | Exposición del panel de la interfaz web de métricas de cAdvisor | complemento | vulnerabilidad/exposición |