Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 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
8120hace 5 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):

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

3. Inicio rápido

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)

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)

# 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:

docker compose down -v

4. Estructura del repositorio

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.
Descargar herramienta