Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 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

pack2theroot-lab

818il y a 4 moisPas encore vérifié

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é) :

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

3. Démarrage rapide

root@kitploit:~
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)

root@kitploit:~
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)

root@kitploit:~
# 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 :

root@kitploit:~
docker compose down -v

4. Structure du dépôt

root@kitploit:~
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.

Bloqué ? docs/HINTS.md contient des indices de plus en plus explicites. N'ouvrez docs/SOLUTION.md qu'après avoir résolu le défi ou si vous avez réellement besoin de la solution.

7. Exécution des outils pour défenseurs

À l'intérieur de l'un ou l'autre conteneur, en tant que n'importe quel utilisateur :

root@kitploit:~
/opt/lab/check-version.sh         # verdict VULNÉRABLE ou CORRIGÉ
/opt/lab/check-preconditions.sh   # auto-vérification d'exposition
/opt/lab/exploit-check.sh         # vérification version + polkit + D-Bus + IOC
/opt/lab/monitor-ioc.sh           # suit le journal pour l'IOC

Depuis l'hôte, côte à côte :

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

Appliquez l'atténuation polkit provisoire à un conteneur vulnérable :

root@kitploit:~
docker exec pack2theroot-vuln /opt/lab/apply-polkit-mitigation.sh
# Puis réessayez l'exploit — il devrait maintenant échouer.

8. Image corrigée — statut du rétroportage

L'image patched gère honnêtement le statut de la version de PackageKit :

  • Elle installe la version de PackageKit actuellement fournie par la distribution.
  • Elle affiche une bannière claire (/etc/pack2theroot-banner) indiquant si la version installée est le vrai correctif ou un espace réservé de la distribution.
  • Quelle que soit la version, elle fournit une règle polkit durcie qui bloque le chemin d'installation sans authentification.

Pour construire une image corrigée complète en version une fois que votre distribution publie le rétroportage, déposez le(s) RPM dans patched/local/ et reconstruisez :

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

9. Sécurité et utilisation responsable

  • Ne pas déployer l'une ou l'autre image de conteneur sur un hôte Docker partagé avec des utilisateurs non fiables.
  • Le conteneur d'exploit nécessite --privileged pour exécuter la pile complète dbus/polkitd/packagekitd. Ne l'exécutez que dans des environnements isolés.
  • Le mot de passe SSH (labuser) est volontairement faible. Ne le réutilisez jamais.
  • Réservé à la recherche défensive autorisée, à l'éducation et aux tests d'intrusion.

10. Références

Sources primaires :

  • Avis de sécurité Telekom — 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
  • Correctif en amont — PackageKit 1.3.5 : https://github.com/PackageKit/PackageKit/releases/tag/v1.3.5
  • Commit du correctif — 76cfb675 : https://github.com/PackageKit/PackageKit/commit/76cfb675fb31acc3ad5595d4380bfff56d2a8697
  • PoC public — Vozec : https://github.com/Vozec/CVE-2026-41651

Voir docs/references.md pour la couverture secondaire et les suiveurs de distribution.

11. Licence

MIT — voir LICENSE.

Télécharger l’outil