Saltar al contenido
OPS // KITitspentest.sh

PE-DOC

Docker

El CLI y daemon de contenedores estándar para ejecutar, inspeccionar y escapar de contenedores en un host comprometido.

Sitio oficialVolver al catálogo

RESUMEN

Docker (docker.com) es el motor de contenedores y CLI que corre en la mayoría de hosts: el cliente `docker` habla con el daemon `dockerd` sobre un socket Unix (o, si está mal configurado, un puerto TCP) para construir, ejecutar y gestionar contenedores e imágenes. En un pentest es a la vez objetivo y herramienta — un socket del daemon expuesto y montado dentro de un contenedor, o un usuario en el grupo `docker`, es una vía conocida para llegar a root en el host, ya que cualquiera que pueda hablar con el socket puede correr un contenedor privilegiado que monte el filesystem del host.

Más allá del ángulo de escape, `docker inspect`, `docker history` y `docker save`/`export` son los comandos del día a día para desarmar un contenedor en ejecución o su imagen en busca de secretos hardcodeados, capabilities de más o un montaje del host escribible, sin necesitar Dive o Crane para un vistazo rápido.

CASOS DE USO

Casos de uso en un engagement

  • 01

    Enumerar contenedores en ejecución, sus montajes y sus capabilities en un host comprometido.

  • 02

    Revisar si hay un socket de Docker expuesto (puerto TCP del host, o montado dentro de otro contenedor) como vía de escalada a root.

  • 03

    Inspeccionar una imagen con `docker history`/`inspect` en busca de secretos hardcodeados o pasos de build riesgosos.

  • 04

    Confirmar si una cuenta de usuario pertenece al grupo `docker`, lo cual equivale a root en el host.

PRIMEROS PASOS

Con un punto de apoyo en un host que corre Docker, para enumerar contenedores/imágenes y buscar rutas de escape hacia el nodo subyacente.

  1. Confirma que el host y cualquier técnica de escape de contenedor están explícitamente en alcance, ya que afecta al nodo subyacente.
  2. Comprueba si el CLI de `docker` y un socket del daemon son accesibles (`/var/run/docker.sock` o un endpoint TCP).
  3. Ejecuta `docker ps` / `docker inspect` para enumerar contenedores, montajes y capabilities en ejecución.
  4. Si el socket es alcanzable, prueba si otorga root efectivo en el host antes de tratarlo como hallazgo confirmado.
docker -H unix:///var/run/docker.sock inspect $(docker ps -q)

ANTES DE USARLA

Qué revisar antes de lanzarla

Un socket de Docker alcanzable suele significar root completo en el host — trata el acceso a él como un hallazgo a nivel de host, y solo ejércelo contra un host explícitamente en alcance.

Apache-2.0 cubre el CLI y el motor; Docker Desktop en sí tiene términos de licencia comercial aparte para organizaciones grandes, algo a anotar si aparece en el entorno.

Detener o reiniciar contenedores para probar rutas de escape puede afectar cargas de producción que comparten el mismo host — coordina el momento con el cliente.

SIGUE EXPLORANDO

Ver toda la fase →