Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pack2theroot-lab — CTF-style Docker lab pour CVE-2026-41651 (Pack2TheRoot) : élévation locale de privilèges via PackageKit permissive-polkit | Kitploit
Outils/GitHubGitHub/dinosn/pack2theroot-lab
Outils DéfensifsEscalade de PrivilègesSécurité des ConteneursAnalyse des VulnérabilitésExploitationCTFTests d'IntrusionApprentissage et ÉducationRed TeamingLabs et Pratique
GitHubdinosn/pack2theroot-lab
8120il y a 5 moisPas encore vérifié

pack2theroot-lab

CTF-style Docker lab pour CVE-2026-41651 (Pack2TheRoot) : élévation locale de privilèges via PackageKit permissive-polkit

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Pack2TheRoot Lab — CVE-2026-41651

Un laboratoire Dockerisé d'élévation de privilèges locaux de type CTF, conçu autour de l'avis de sécurité Pack2TheRoot (CVE-2026-41651), une faille vieille de 12 ans dans le démon PackageKit, divulguée par l'équipe Red Team de Deutsche Telekom le 22 avril 2026.

Le laboratoire comprend trois conteneurs : un défi CTF avec polkit permissif, une cible de comparaison durcie, et une reproduction complète de l'exploit TOCTOU qui compile PackageKit vulnérable depuis les sources et exécute l'exploit réel de la cause racine de CVE-2026-41651.


1. Ce que vous obtenez

ConteneurPortRôleRésultat de l'exploit
pack2theroot-vulntcp/2222 (ssh)PackageKit ≤ 1.3.4 + règle polkit permissiveRoot via RPM malveillant
pack2theroot-patchedtcp/2223 (ssh)Identique, mais polkit durciL'exploit échoue
pack2theroot-exploit—PackageKit 1.3.4 vulnérable compilé depuis les sourcesRoot via course D-Bus TOCTOU

En plus :

  • Un brief de défi destiné aux joueurs (docs/CHALLENGE.md)
  • Des indices progressifs (docs/HINTS.md)
  • Une solution complète avec drapeau (docs/SOLUTION.md)
  • Des schémas visuels du flux de l'exploit (docs/diagrams/)
  • Des outils pour les défenseurs : vérification de version, surveillance IOC, comparaison côte à côte, script d'atténuation polkit provisoire.

2. Résumé de la vulnérabilité

ChampValeur
CVECVE-2026-41651
NomPack2TheRoot
ClasseÉlévation de privilèges locale (TOCTOU / CWE-367)
ComposantDémon PackageKit (pk-transaction.c)
Plage vulnérable>= 1.0.2 et <= 1.3.4 (12 ans de versions)
Corrigé dansPackageKit 1.3.5 (commit 76cfb675, publié le 2026-04-22)
CVSS 3.18.8 (ÉLEVÉE) — AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Pré-conditionsShell local non privilégié sur un hôte exécutant PackageKit
DécouvreurDeutsche Telekom Security GmbH — Red Team

Cause racine — trois bugs enchaînés dans pk-transaction.c

BugEmplacementEffet
BUG 1InstallFiles() (~ligne 4036)Écrase cached_transaction_flags et cached_full_paths sans condition — aucun garde-fou d'état
BUG 2pk_transaction_set_state() (~lignes 876–881)Ignore silencieusement les transitions d'état rétrogrades au lieu de générer une erreur — les drapeaux sont déjà empoisonnés
BUG 3pk_transaction_run() (~lignes 2273–2277)Lit cached_transaction_flags au moment de la répartition, et non au moment de l'autorisation
ContournementDrapeau SIMULATE (~lignes 2893–2900)PK_TRANSACTION_FLAG_SIMULATE (0x4) contourne entièrement polkit

L'exploit envoie deux appels D-Bus asynchrones InstallFiles() sur la même transaction : d'abord avec SIMULATE (contourne polkit, met en file un rappel GLib idle), puis immédiatement avec NONE + le paquet malveillant (écrase les drapeaux/chemins en cache avant que l'idle ne se déclenche). L'ordonnancement par priorité de GLib garantit que les deux messages D-Bus sont répartis avant le rappel idle — ce qui rend l'opération déterministe, et non une course temporelle.

IOC connu (issu de l'avis de sécurité) :

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

3. Démarrage rapide

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

Défi CTF (chemin polkit permissif)

ssh labuser@localhost -p 2222     # mot de passe : labuser
# puis suivez docs/CHALLENGE.md

Le drapeau se trouve dans /root/flag.txt (mode 0400 root:root). Format : PACK2THEROOT{...}

Reproduction de l'exploit TOCTOU (cause racine réelle du CVE)

# Construction et exécution — le mode automatique exécute l'exploit immédiatement :
docker compose run --rm exploit

# Ou mode manuel :
docker compose run --rm --entrypoint /entrypoint.sh exploit
# Puis à l'intérieur du conteneur :
su - victim -c /exploit/cve-2026-41651

L'exploit construit deux paquets .deb en C (aucun outil externe requis), envoie la course D-Bus à deux appels, et crée un bash SUID dans /tmp/.suid_bash. Voir docs/SOLUTION.md pour la procédure technique complète.

Arrêt :

docker compose down -v

4. Structure du dépôt

pack2theroot-lab/
├── README.md
├── docker-compose.yml
├── docs/
│   ├── CHALLENGE.md         # brief du joueur
│   ├── HINTS.md             # indices progressifs (les deux chemins)
│   ├── SOLUTION.md          # solution complète + drapeau
│   ├── references.md        # sources primaires et secondaires
│   ├── threat-model.md      # hypothèses attaquant/défenseur
│   └── diagrams/            # schémas SVG du flux de l'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           # compile PackageKit 1.3.4 vulnérable depuis les sources
│   ├── entrypoint.sh        # démarre dbus + polkitd + packagekitd
│   ├── Makefile
│   └── src/
│       └── cve-2026-41651.c # l'exploit TOCTOU (PoC public)
├── vulnerable/
│   ├── Dockerfile
│   ├── entrypoint.sh
│   └── policy/
│       └── 10-pack2theroot-lab-misconfig.rules   # défi CTF
├── patched/
│   ├── Dockerfile
│   ├── entrypoint.sh
│   ├── local/                # déposez ici un RPM de rétroportage 1.3.5 (facultatif)
│   └── policy/
│       └── 10-pack2theroot-lab-hardened.rules    # le correctif
└── scripts/
    ├── exploit-check.sh         # vérifie version, polkit, D-Bus, IOC
    ├── check-version.sh         # verdict VULNÉRABLE vs CORRIGÉ
    ├── check-preconditions.sh   # vérification de cohérence pkcon / polkit / D-Bus
    ├── monitor-ioc.sh           # suit le journal pour l'IOC de l'avis
    ├── compare-env.sh           # diff entre les deux conteneurs
    └── apply-polkit-mitigation.sh  # durcissement provisoire pour les hôtes non corrigés

5. Schémas visuels

Le répertoire docs/diagrams/ contient des schémas SVG montrant le flux de l'exploit. Ouvrez-les dans n'importe quel navigateur :

SchémaDescription
01-docker-build.svgConstruction Docker en deux étapes — compilation de PackageKit vulnérable
02-container-startup.svgLancement du conteneur — démarrage de dbus, polkitd, packagekitd
03-exploit-execution.svgSortie de l'exploit étape par étape avec phases annotées
04-dbus-race-sequence.svgSchéma de séquence D-Bus — comment BUG 1/2/3 s'enchaînent avec la priorité GLib
05-attack-overview.svgFlux d'attaque de haut niveau : attaquant vs système avec chronologie
06-auto-mode-full-run.svgTerminal complet du mode --auto — du démarrage du conteneur au shell root

6. Jouer au défi CTF

Voir docs/CHALLENGE.md. En résumé :

  1. Connectez-vous en SSH en tant que labuser (mot de passe labuser).
  2. Reconnaissez les règles polkit. L'une d'elles est beaucoup trop permissive.
  3. Construisez un RPM malveillant (rpm-build, rpmdevtools sont installés).
  4. Installez-le avec pkcon install-local --allow-untrusted.
  5. Le scriptlet %post s'exécute en root. Lisez /root/flag.txt.
Télécharger l’outil