
Technische Analyse und sicherheitsbewusster Forschungsrahmen für CVE-2019-6447 in ES File Explorer für Android
Ein unabhängig implementiertes, sicherheitsbewusstes Forschungs-Harness und technische Analyse für CVE-2019-6447, einen nicht authentifizierten HTTP-Dienst, der von verwundbaren Versionen des ES File Explorers für Android bereitgestellt wird.
Nur autorisierte Forschung. Verwenden Sie dieses Projekt nur gegen Geräte, die Sie besitzen oder für die Sie ausdrückliche Erlaubnis zum Testen haben. Die CLI führt standardmäßig eine nicht-invasive TCP-Prüfung durch. Vorgänge, die Gerätedaten oder Dateien anfordern, erfordern ein explizites Labor-Autorisierungs-Flag.
| Eigenschaft | Wert |
|---|---|
| Betroffenes Produkt | ES File Explorer File Manager for Android |
| Betroffene Versionen | 4.1.9.7.4 und früher |
| Offengelegter Dienst | Nicht authentifizierter HTTP-Server auf TCP/59777 |
| Angriffsvoraussetzung | Netzwerknähe zum Android-Gerät |
| Auswirkung | Geräte-/App-Aufzählung, beliebiges Dateilesen und App-Start |
| Grundlegende Schwachstelle | CWE-306 – Fehlende Authentifizierung für kritische Funktion |
| NVD-Schweregrad | CVSS 3.1: 8.1 Hoch (AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) |
Sobald die Anwendung gestartet wurde, kann der eingebettete Dienst im lokalen Wi-Fi-Netzwerk erreichbar bleiben. Er akzeptiert JSON-Befehle, ohne den Aufrufer zu authentifizieren. Dadurch wird eine app-interne Verwaltungsschnittstelle zu einer netzwerkzugänglichen Angriffsfläche.
flowchart LR
A["Angreifer im angrenzenden Netzwerk"] -->|"HTTP POST / TCP 59777"| B["Eingebetteter ES HTTP-Dienst"]
B --> C["Befehlsverteiler"]
C --> D["Geräte- und App-Metadaten"]
C --> E["Dateien im gemeinsamen Speicher"]
C --> F["Android-App-Start"]
Für die vollständige Analyse siehe docs/technical-analysis.md.
git clone https://github.com/acloudinthebluesky/CVE-2019-6447-ES-File-Explorer.git
cd CVE-2019-6447-ES-File-Explorer
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .
esfile-6447 probe --target 192.168.56.10
Dies versucht nur eine TCP-Verbindung zu Port 59777. Ein offener Port ist für sich genommen kein Beweis dafür, dass das Ziel verwundbar ist.
esfile-6447 command \
--target 192.168.56.10 \
--name getDeviceInfo \
--i-understand-this-is-an-authorized-lab
esfile-6447 pull \
--target 192.168.56.10 \
--remote-path /sdcard/lab-marker.txt \
--output ./evidence/lab-marker.txt \
--i-understand-this-is-an-authorized-lab
Verwenden Sie nur synthetische Dateien. Sammeln Sie keine persönlichen Daten als Nachweis der Auswirkung.
Verteidiger können nach unerwarteten Listenern auf TCP/59777 und HTTP-Anfragen mit JSON-command-Feldern suchen. Netzwerkkontrollen können die Exposition reduzieren, aber die dauerhafte Lösung ist, die verwundbare Anwendung zu entfernen oder zu aktualisieren. Eingebettete Verwaltungsdienste sollten an Loopback binden, es sei denn, Fernzugriff ist unerlässlich, jede Anfrage authentifizieren, jede Operation autorisieren und beenden, wenn sie nicht mehr benötigt werden.
python -m unittest discover -s tests -v
Die Tests starten einen Loopback-only Mock-HTTP-Server. Sie kontaktieren keine externen Hosts.
Dieses Projekt ist für defensive Validierung, Bildung und autorisierte Schwachstellenforschung gedacht. Es verzichtet bewusst auf Subnetz-Scanning und verwendet standardmäßig eine reine Konnektivitätsprüfung. Der Zugriff auf ein Gerät ohne Erlaubnis kann gegen Gesetze und Richtlinien verstoßen, selbst wenn keine Dateien gespeichert werden.
Die Schwachstellenentdeckung und der ursprüngliche öffentliche Proof of Concept werden den oben genannten Forschern zugeschrieben. Die Implementierung in diesem Repository ist eine unabhängige, pädagogische Neuimplementierung.