PE-NSE
nsenter
Parte de util-linux; entra a los namespaces de un proceso existente, la forma clásica de adjuntarse o escapar de un contenedor.
Sitio oficialVolver al catálogo
RESUMEN
nsenter (parte de util-linux, github.com/util-linux/util-linux) ejecuta un comando dentro de los namespaces de un proceso objetivo ya en marcha — mount, UTS, IPC, red, PID, usuario, cgroup — en vez de crear unos nuevos. Dado un PID, `nsenter -t <pid> -a` te deja dentro del conjunto completo de namespaces de ese proceso, que es exactamente lo que hace un runtime de contenedores por debajo, y exactamente por qué nsenter es la herramienta manual clásica tanto para entrar a un contenedor en ejecución desde el host como, cuando una mala configuración lo permite, para escapar de uno.
El escenario de escape más común es un contenedor corrido con `--pid=host` o con capabilities `SYS_ADMIN`/`SYS_PTRACE` y acceso a `/proc`: desde dentro, nsenter puede apuntar a un PID del host visible por el namespace PID compartido y adjuntarse a su namespace mount para alcanzar el filesystem real del host, sin necesitar un exploit más allá de la propia mala configuración.
CASOS DE USO
Casos de uso en un engagement
- 01
Adjuntarse a los namespaces de un contenedor en ejecución desde el host para inspección en vivo sin `docker exec`.
- 02
Escapar de un contenedor que comparte el namespace PID del host (`--pid=host`) entrando al namespace mount de un proceso del host.
- 03
Inspeccionar el namespace de red de otro contenedor o proceso para ver sus rutas/sockets reales.
- 04
Reproducir y demostrar una mala configuración de aislamiento de namespaces para redactar un hallazgo.
PRIMEROS PASOS
En un host tras conseguir un punto de apoyo, para adjuntarse a los namespaces de un proceso objetivo — un contenedor o la sesión de otro usuario — para inspección o escape.
- Confirma que el host está explícitamente en alcance antes de intentar cualquier escape basado en namespaces — afecta al nodo subyacente, no a un solo contenedor.
- Desde dentro de un contenedor o como usuario con pocos privilegios, revisa `/proc/[pid]/ns/` para ver qué namespaces se comparten con el host.
- Si un PID del host es visible (namespace PID compartido), usa `nsenter -t <pid> -a` o apunta a un namespace específico (`-m`, `-n`) para adjuntarte.
- Confirma qué acceso tiene realmente la nueva shell (filesystem del host, red del host) y documéntalo antes de seguir.
nsenter -t 1 -m -u -i -n -p -- bashANTES DE USARLA
Qué revisar antes de lanzarla
Un escape exitoso vía nsenter afecta al host subyacente, no solo al contenedor actual — ejércelo solo contra un host explícitamente nombrado en el alcance.
Requiere `SYS_PTRACE` (o root) para apuntar a los namespaces de otro proceso; un contenedor sin esa capability y sin namespace PID compartido no es explotable de esta forma.
Adjuntarse al namespace de otro usuario o servicio puede exponer estado de producción en vivo (sockets abiertos, peticiones en curso) — trata esos datos según las reglas de manejo del engagement.