Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/dinosn/pack2theroot-lab
Herramientas DefensivasEscalada de PrivilegiosSeguridad de ContenedoresAnálisis de VulnerabilidadesExplotaciónCTFPruebas de PenetraciónAprendizaje y EducaciónRed TeamingLabs y Práctica
GitHubdinosn/pack2theroot-lab

pack2theroot-lab

# Laboratorio Docker estilo CTF para CVE-2026-41651 (Pack2TheRoot): escalada de privilegios local mediante PackageKit permissive-polkit

Ver Repositorio
818hace 4 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Pack2TheRoot Lab — CVE-2026-41651

Un laboratorio de escalada de privilegios local estilo CTF, dockerizado y construido en torno al aviso Pack2TheRoot (CVE-2026-41651), una vulnerabilidad de 12 años en el demonio PackageKit divulgada por el Red Team de Deutsche Telekom el 22 de abril de 2026.

El laboratorio incluye tres contenedores: un desafío CTF con polkit permisivo, un objetivo de comparación endurecido y una reproducción completa del exploit TOCTOU que compila el PackageKit vulnerable desde el código fuente y ejecuta el exploit real de la causa raíz de CVE-2026-41651.


1. Qué incluye

ContenedorPuertoRolResultado del exploit
pack2theroot-vulntcp/2222 (ssh)PackageKit ≤ 1.3.4 + regla polkit permisivaRoot mediante RPM manipulado
pack2theroot-patchedtcp/2223 (ssh)Igual, pero con polkit endurecidoEl exploit falla
pack2theroot-exploit—PackageKit 1.3.4 vulnerable compilado desde el código fuenteRoot mediante carrera TOCTOU en D-Bus

Además:

  • Un resumen del desafío orientado al jugador (docs/CHALLENGE.md)
  • Pistas progresivas (docs/HINTS.md)
  • Guía completa y bandera (docs/SOLUTION.md)
  • Diagramas visuales del flujo del exploit (docs/diagrams/)
  • Herramientas para defensores: comprobación de versión, monitor de IOC, comparación lado a lado, script de mitigación provisional de polkit.

2. Resumen de la vulnerabilidad

CampoValor
CVECVE-2026-41651
NombrePack2TheRoot
ClaseEscalada de privilegios local (TOCTOU / CWE-367)
ComponenteDemonio PackageKit (pk-transaction.c)
Rango vulnerable>= 1.0.2 y <= 1.3.4 (12 años de versiones)
Corregido enPackageKit 1.3.5 (commit 76cfb675, publicado el 2026-04-22)
CVSS 3.18.8 (ALTA) — AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
PrecondicionesShell local sin privilegios en un host que ejecute PackageKit
DescubridorDeutsche Telekom Security GmbH — Red Team

Causa raíz — tres errores encadenados en pk-transaction.c

ErrorUbicaciónEfecto
ERROR 1InstallFiles() (~línea 4036)Sobrescribe cached_transaction_flags y cached_full_paths de forma incondicional — sin guarda de estado
ERROR 2pk_transaction_set_state() (~líneas 876–881)Descarta silenciosamente las transiciones de estado hacia atrás en lugar de generar un error — las banderas ya están envenenadas
ERROR 3pk_transaction_run() (~líneas 2273–2277)Lee cached_transaction_flags en el momento del despacho, no en el de la autorización
BypassBandera SIMULATE (~líneas 2893–2900)PK_TRANSACTION_FLAG_SIMULATE (0x4) omite polkit por completo

El exploit envía dos llamadas asíncronas InstallFiles() por D-Bus en la misma transacción: primero con SIMULATE (omite polkit, pone en cola una devolución de llamada inactiva de GLib), e inmediatamente después con NONE + el paquete malicioso (sobrescribe las banderas/rutas en caché antes de que se ejecute la devolución inactiva). La prioridad de ordenación de GLib garantiza que ambos mensajes D-Bus se despachen antes de la devolución de llamada inactiva, lo que hace que esto sea determinista y no una carrera de tiempos.

IOC conocido (del aviso):

root@kitploit:~
journalctl --no-pager -u packagekit | grep -iE 'emitted_finished|pk_transaction_finished_emit|pk-transaction\.c:514'

3. Inicio rápido

root@kitploit:~
git clone https://github.com/dinosn/pack2theroot-lab.git
cd pack2theroot-lab
docker compose build
docker compose up -d

Desafío CTF (ruta con polkit permisivo)

root@kitploit:~
ssh labuser@localhost -p 2222     # contraseña: labuser
# luego trabaja con docs/CHALLENGE.md

La bandera está en /root/flag.txt (modo 0400 root:root). Formato: PACK2THEROOT{...}

Reproducción del exploit TOCTOU (causa raíz real del CVE)

root@kitploit:~
# Compilar y ejecutar — el modo automático ejecuta el exploit de inmediato:
docker compose run --rm exploit

# O modo manual:
docker compose run --rm --entrypoint /entrypoint.sh exploit
# Luego, dentro del contenedor:
su - victim -c /exploit/cve-2026-41651

El exploit compila dos paquetes .deb en C (sin necesidad de herramientas externas), envía la carrera de dos llamadas por D-Bus y crea un bash SUID en /tmp/.suid_bash. Consulta docs/SOLUTION.md para la guía técnica completa.

Desmontaje:

root@kitploit:~
docker compose down -v

4. Estructura del repositorio

root@kitploit:~
pack2theroot-lab/
├── README.md
├── docker-compose.yml
├── docs/
│   ├── CHALLENGE.md         # resumen para el jugador
│   ├── HINTS.md             # pistas progresivas (ambas rutas)
│   ├── SOLUTION.md          # guía completa + bandera
│   ├── references.md        # fuentes primarias y secundarias
│   ├── threat-model.md      # supuestos atacante/defensor
│   └── diagrams/            # diagramas SVG del flujo del exploit
│       ├── 01-docker-build.svg
│       ├── 02-container-startup.svg
│       ├── 03-exploit-execution.svg
│       ├── 04-dbus-race-sequence.svg
│       ├── 05-attack-overview.svg
│       └── 06-auto-mode-full-run.svg
├── exploit/
│   ├── Dockerfile           # compila PackageKit 1.3.4 vulnerable desde el código fuente
│   ├── entrypoint.sh        # inicia dbus + polkitd + packagekitd
│   ├── Makefile
│   └── src/
│       └── cve-2026-41651.c # el exploit TOCTOU (PoC público)
├── vulnerable/
│   ├── Dockerfile
│   ├── entrypoint.sh
│   └── policy/
│       └── 10-pack2theroot-lab-misconfig.rules   # desafío CTF
├── patched/
│   ├── Dockerfile
│   ├── entrypoint.sh
│   ├── local/                # coloca aquí un RPM de backport 1.3.5 (opcional)
│   └── policy/
│       └── 10-pack2theroot-lab-hardened.rules    # la corrección
└── scripts/
    ├── exploit-check.sh         # comprueba versión, polkit, D-Bus, IOC
    ├── check-version.sh         # veredicto VULNERABLE vs PARCHADO
    ├── check-preconditions.sh   # comprobación de pkcon / polkit / D-Bus
    ├── monitor-ioc.sh           # sigue el journal en busca del IOC del aviso
    ├── compare-env.sh           # compara ambos contenedores
    └── apply-polkit-mitigation.sh  # endurecimiento provisional para hosts sin parchear

5. Diagramas visuales

El directorio docs/diagrams/ contiene diagramas SVG que muestran el flujo del exploit. Ábrelos en cualquier navegador:

DiagramaDescripción
01-docker-build.svgCompilación Docker en dos etapas — compilación del PackageKit vulnerable
02-container-startup.svgArranque del contenedor — inicio de dbus, polkitd, packagekitd
03-exploit-execution.svgSalida del exploit paso a paso con fases anotadas
04-dbus-race-sequence.svgDiagrama de secuencia D-Bus — cómo se encadenan ERROR 1/2/3 con la prioridad de GLib
05-attack-overview.svgFlujo de ataque de alto nivel: atacante vs sistema con cronología
06-auto-mode-full-run.svgTerminal completa del modo --auto — desde el inicio del contenedor hasta la shell root

6. Jugar al desafío CTF

Consulta docs/CHALLENGE.md. En resumen:

  1. Conéctate por SSH como labuser (contraseña labuser).
  2. Reconoce las reglas de polkit. Una de ellas es demasiado permisiva.
  3. Compila un RPM malicioso (rpm-build, rpmdevtools están instalados).
  4. Instálalo con pkcon install-local --allow-untrusted.
  5. El scriptlet %post se ejecuta como root. Lee /root/flag.txt.

¿Atascado? docs/HINTS.md contiene pistas cada vez más explícitas. Solo abre docs/SOLUTION.md después de haberlo resuelto o de necesitar realmente el informe.

7. Ejecutar las herramientas para defensores

Dentro de cualquiera de los contenedores, como cualquier usuario:

root@kitploit:~
/opt/lab/check-version.sh         # veredicto VULNERABLE o PARCHADO
/opt/lab/check-preconditions.sh   # autocomprobación de exposición
/opt/lab/exploit-check.sh         # comprobación de versión + polkit + D-Bus + IOC
/opt/lab/monitor-ioc.sh           # sigue el journal en busca del IOC

Desde el host, lado a lado:

root@kitploit:~
./scripts/compare-env.sh

Aplica la mitigación provisional de polkit a un contenedor vulnerable:

root@kitploit:~
docker exec pack2theroot-vuln /opt/lab/apply-polkit-mitigation.sh
# Luego reintenta el exploit — ahora debería fallar.

8. Imagen parcheada — estado del backport

La imagen patched gestiona el estado de la versión de PackageKit de forma honesta:

  • Instala el PackageKit que la distribución incluya actualmente.
  • Muestra un banner claro (/etc/pack2theroot-banner) que indica si la versión instalada es el parche real o un marcador de posición de la distribución.
  • Independientemente de la versión, incluye una regla polkit endurecida que bloquea la ruta de instalación sin autenticación.

Para compilar una imagen parcheada completa en cuanto tu distribución publique el backport, coloca los RPM en patched/local/ y recompila:

root@kitploit:~
docker compose build --build-arg USE_LOCAL_RPM=1 patched

9. Seguridad y uso responsable

  • No publiques ninguna de las imágenes de los contenedores en un host Docker compartido con usuarios no confiables.
  • El contenedor del exploit requiere --privileged para ejecutar la pila completa de dbus/polkitd/packagekitd. Ejecútalo solo en entornos aislados.
  • La contraseña SSH (labuser) es intencionalmente débil. Nunca la reutilices.
  • Solo para investigación defensiva autorizada, educación y pruebas de penetración.

10. Referencias

Fuentes primarias:

  • Aviso de Telekom Security — https://github.security.telekom.com/2026/04/pack2theroot-linux-local-privilege-escalation.html
  • NVD — CVE-2026-41651: https://nvd.nist.gov/vuln/detail/CVE-2026-41651
  • Corrección oficial — PackageKit 1.3.5: https://github.com/PackageKit/PackageKit/releases/tag/v1.3.5
  • Commit de la corrección — 76cfb675: https://github.com/PackageKit/PackageKit/commit/76cfb675fb31acc3ad5595d4380bfff56d2a8697
  • PoC público — Vozec: https://github.com/Vozec/CVE-2026-41651

Consulta docs/references.md para cobertura secundaria y rastreadores de distribución.

11. Licencia

MIT — consulta LICENSE.

Descargar herramienta