PE-CAP
capsh
Envoltorio de shell de capabilities de libcap, usado para inspeccionar y probar las capabilities de Linux disponibles a un proceso.
Sitio oficialVolver al catálogo
RESUMEN
capsh es el envoltorio de shell de capabilities que viene con libcap (git.kernel.org/pub/scm/libs/libcap/libcap.git), la biblioteca de referencia en espacio de usuario para el sistema de capabilities POSIX de Linux — el mecanismo que permite a un proceso tener una porción específica del poder de root (como enlazar puertos bajos, o montar filesystems) sin ser totalmente privilegiado. `capsh --print` es la forma más rápida de ver exactamente qué capabilities tiene una shell o proceso ahora mismo, en cada uno de los conjuntos effective/permitted/inheritable/bounding, que es lo primero que conviene revisar al llegar a cualquier contenedor o entorno restringido.
También elimina capabilities y re-ejecuta un comando bajo el conjunto reducido (`capsh --drop=... -- -c '...'`), que es la forma de probar en la práctica, no en teoría, si una capability sobreprivilegiada específica como CAP_SYS_ADMIN, CAP_SYS_PTRACE o CAP_DAC_OVERRIDE es realmente utilizable para escalar privilegios o escapar de un contenedor desde el contexto actual.
CASOS DE USO
Casos de uso en un engagement
- 01
Imprimir los conjuntos de capabilities actuales de un proceso justo al llegar a un contenedor o shell restringida.
- 02
Confirmar si una capability sobreprivilegiada (CAP_SYS_ADMIN, CAP_SYS_PTRACE, CAP_DAC_OVERRIDE) es realmente explotable desde el contexto actual.
- 03
Reproducir una técnica específica de escalada o escape bajo un conjunto de capabilities reducido y controlado para aislar qué es realmente necesario.
- 04
Documentar un contexto de seguridad de contenedor/pod sobreaprovisionado (`--cap-add`) para redactar un hallazgo.
PRIMEROS PASOS
Dentro de un contenedor o en un host, para revisar exactamente qué capabilities de Linux tiene el proceso actual antes de decidir si existe una vía de escalada.
- Confirma que probar escalada de privilegios basada en capabilities en este host/contenedor está dentro del alcance acordado.
- Ejecuta `capsh --print` para ver los conjuntos actuales de capabilities effective, permitted, inheritable y bounding.
- Cruza cualquier capability fuera de lo estándar con técnicas de abuso conocidas (ej. CAP_SYS_ADMIN, CAP_SYS_MODULE).
- Usa `capsh --drop=... --` para re-ejecutar bajo un conjunto reducido y confirmar de qué capability depende exactamente una vía de exploit.
capsh --printANTES DE USARLA
Qué revisar antes de lanzarla
Las técnicas que usan capabilities de más (CAP_SYS_ADMIN en particular) para escapar de un contenedor llegan al host subyacente — ejércelas solo contra un host explícitamente en alcance, no solo el contenedor.
Que una capability esté presente en el bounding set no siempre significa que sea utilizable desde el contexto actual (namespaces de usuario y filtros seccomp aún pueden bloquearla) — verifícalo antes de reportar.
capsh debe estar presente o ser transferible al contenedor/host objetivo; en imágenes mínimas o distroless puede requerir ejecutarlo desde un binario estático montado o copiado.