
Analisi tecnica e imbracatura di ricerca attenta alla sicurezza per CVE-2019-6447 in ES File Explorer per Android
Un harness di ricerca implementato indipendentemente, attento alla sicurezza, e un'analisi tecnica per CVE-2019-6447, un servizio HTTP non autenticato esposto da versioni vulnerabili di ES File Explorer per Android.
Solo ricerca autorizzata. Utilizza questo progetto solo su dispositivi di tua proprietà o per i quali hai esplicita autorizzazione al test. Il CLI per impostazione predefinita esegue un probe TCP non invasivo. Le operazioni che richiedono dati del dispositivo o file richiedono un flag esplicito di autorizzazione di laboratorio.
| Proprietà | Valore |
|---|---|
| Prodotto interessato | ES File Explorer File Manager per Android |
| Versioni interessate | 4.1.9.7.4 e precedenti |
| Servizio esposto | Server HTTP non autenticato su TCP/59777 |
| Prerequisito dell'attacco | Vicinanza di rete al dispositivo Android |
| Impatto | Enumerazione del dispositivo/app, lettura arbitraria di file e avvio di applicazioni |
| Debolezza principale | CWE-306 — Mancata autenticazione per funzione critica |
| Gravità NVD | CVSS 3.1: 8.1 Alta (AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) |
Una volta avviata l'applicazione, il servizio integrato può rimanere raggiungibile sulla rete Wi-Fi locale. Accetta comandi JSON senza autenticare il chiamante. Ciò trasforma un'interfaccia di gestione interna dell'app in una superficie di attacco accessibile dalla rete.
flowchart LR
A["Attaccante sulla rete adiacente"] -->|"HTTP POST / TCP 59777"| B["Servizio HTTP ES integrato"]
B --> C["Dispatcher dei comandi"]
C --> D["Metadati del dispositivo e dell'app"]
C --> E["File della memoria condivisa"]
C --> F["Avvio di app Android"]Per l'analisi completa, vedere 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
Questo tenta solo una connessione TCP alla porta 59777. Una porta aperta non è, di per sé, prova che il target sia vulnerabile.
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
Utilizzare solo file sintetici. Non raccogliere dati personali come prova dell'impatto.
I difensori possono cercare listener inaspettati su TCP/59777 e richieste HTTP contenenti campi JSON command. I controlli di rete possono ridurre l'esposizione, ma la soluzione duratura è rimuovere o aggiornare l'applicazione vulnerabile. I servizi di gestione incorporati dovrebbero essere vincolati al loopback a meno che l'accesso remoto non sia essenziale, autenticare ogni richiesta, autorizzare ogni operazione e terminare quando non più necessari.
python -m unittest discover -s tests -v
I test avviano un server HTTP mock solo su loopback. Non contattano host esterni.
Questo progetto è destinato alla validazione difensiva, all'istruzione e alla ricerca autorizzata sulle vulnerabilità. Omette deliberatamente la scansione di sottoreti e per impostazione predefinita esegue un probe solo di connettività. Accedere a un dispositivo senza autorizzazione può violare leggi e policy anche quando non vengono conservati file.
La scoperta della vulnerabilità e il proof of concept pubblico originale sono accreditati ai ricercatori sopra citati. L'implementazione in questo repository è una reimplementazione educativa indipendente.