
Технический анализ и исследовательский стенд с учётом безопасности для CVE-2019-6447 в ES File Explorer для Android
Независимо реализованный, ориентированный на безопасность исследовательский инструментарий и технический анализ для CVE-2019-6447 — неаутентифицированного HTTP-сервиса, предоставляемого уязвимыми версиями ES File Explorer для Android.
Только авторизованные исследования. Используйте этот проект только на устройствах, которыми вы владеете или на тестирование которых имеете явное разрешение. CLI по умолчанию выполняет неинвазивное TCP-зондирование. Операции, запрашивающие данные устройства или файлы, требуют явного флага авторизации лабораторной работы.
| Свойство | Значение |
|---|---|
| Затронутый продукт | ES File Explorer File Manager для Android |
| Затронутые версии | 4.1.9.7.4 и более ранние |
| Открытая служба | Неаутентифицированный HTTP-сервер на TCP/59777 |
| Предварительное условие атаки | Сетевая доступность Android-устройства |
| Воздействие | Перечисление устройств/приложений, произвольное чтение файлов и запуск приложений |
| Корневая слабость | CWE-306 — Missing Authentication for Critical Function |
| Степень опасности NVD | CVSS 3.1: 8.1 High (AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) |
После запуска приложения встроенная служба может оставаться доступной в локальной Wi-Fi-сети. Она принимает JSON-команды без аутентификации вызывающей стороны. Это превращает внутренний интерфейс управления приложения в доступную из сети поверхность атаки.
flowchart LR
A["Adjacent-network attacker"] -->|"HTTP POST / TCP 59777"| B["Embedded ES HTTP service"]
B --> C["Command dispatcher"]
C --> D["Device and app metadata"]
C --> E["Shared-storage files"]
C --> F["Android app launch"]Полный анализ см. в 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
Эта команда лишь пытается установить TCP-соединение с портом 59777. Открытый порт сам по себе не является доказательством уязвимости цели.
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
Используйте только синтетические файлы. Не собирайте личные данные в качестве доказательства воздействия.
Защитники могут искать неожиданных слушателей на TCP/59777 и HTTP-запросы, содержащие JSON-поля command. Сетевые средства контроля могут снизить подверженность риску, но долговременное решение — удаление или обновление уязвимого приложения. Встроенные службы управления должны привязываться к loopback, если удалённый доступ не обязателен, аутентифицировать каждый запрос, авторизовывать каждую операцию и завершать работу, когда они больше не нужны.
python -m unittest discover -s tests -v
Тесты запускают имитационный HTTP-сервер, работающий только через loopback. Они не обращаются к внешним хостам.
Этот проект предназначен для защитной проверки, обучения и авторизованных исследований уязвимостей. Он намеренно исключает сканирование подсетей и по умолчанию выполняет только проверку связности. Доступ к устройству без разрешения может нарушать закон и политики, даже если никакие файлы не сохраняются.
Обнаружение уязвимости и оригинальная публичная концепция-доказательство принадлежат исследователям, указанным выше. Реализация в этом репозитории является независимой образовательной повторной реализацией.