Saltar al contenido
OPS // KITitspentest.sh

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.

  1. 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.
  2. Desde dentro de un contenedor o como usuario con pocos privilegios, revisa `/proc/[pid]/ns/` para ver qué namespaces se comparten con el host.
  3. 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.
  4. 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 -- bash

ANTES 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.

SIGUE EXPLORANDO

Ver toda la fase →