
CVE-2025-65753 PoC
Доказательство концепции для CVE-2025-65753: удалённое выполнение кода на точке доступа Gryphon Guardian с версией прошивки 01.06.0006.22 через некорректную проверку TLS-сертификата.
Точка доступа WiFi Gryphon Guardian с версией прошивки 01.06.0006.22 не выполняет должную проверку TLS-сертификата интернет-клиента speedtest, загружаемого после соответствующего запроса через приложение. Эта уязвимость позволяет злоумышленнику перехватывать и изменять взаимодействие, внедряя в клиент вредоносный код, который затем выполняется точкой доступа с правами root.
Существует 2 способа эксплуатации этой уязвимости:
Для целей этого PoC трафик от точки доступа маршрутизируется через компьютер атакующего (по сути, MitM-атака) путем объединения 2 сетевых интерфейсов, как показано на этой диаграмме.

Чтобы сделать это, а также перенаправлять TCP-трафик на локальный порт 9900 для анализа, я использовал свой собственный инструмент: https://github.com/diegovargasj/bridge-interfaces

Затем я использовал инструмент certmitm от aapooksman (https://github.com/aapooksman/certmitm) для анализа TLS-соединений и автоматического развертывания множества атак для проверки валидации сертификата. Это выявило несколько недостатков на нескольких серверах. Тот, что привлёк моё внимание, — загрузка клиента speedtest с https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-armhf.tgz, которую можно перехватить с помощью простого самоподписанного сертификата.

Архив tar содержит 32-битный ELF, скомпилированный для ARM, который, очевидно, загружается, распаковывается и выполняется устройством.

Устройство не проверяет подлинность TLS-сертификата, поскольку охотно принимает простой самоподписанный. Таким образом, развернув HTTPS-сервер и подменяя DNS-ответы для install.speedtest.net, вы можете отдавать любой исполняемый файл по своему выбору. Для этого просто используйте следующую конфигурацию nginx:
server {
listen 443 ssl default_server;
server_name install.speedtest.net;
ssl_certificate /path/to/self_signed_cert.pem;
ssl_certificate_key /path/to/self_signed_key.pem;
root /path/to/webroot;
}
Затем добавьте следующую строку в файл /etc/hosts, чтобы подменять DNS-ответы через dnsmasq.
192.168.0.15 install.speedtest.net
Наконец, перезапустите скрипт bridge-interfaces.sh, остановите certmitm.py и запустите mitmproxy:
mitmproxy --listen-host 192.168.0.15 --listen-port 9900 --mode transparent -k
Теперь нам нужен только пейлоад. Поскольку на точке доступа установлен python, достаточно простого скрипта meterpreter. Создайте скрипт с помощью msfvenom:

Замените оригинальный ELF из клиента speedtest bash-скриптом, который вызывает пейлоад:
python payload.py
И упакуйте его в tar-архив, с правильным путём, чтобы он соответствовал веб-запросу к https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-armhf.tgz:
tar -czvf ookla-speedtest-1.2.0-linux-armhf.tgz speedtest payload.py
Теперь настраиваем слушатель meterpreter. После вызова speedtest из приложения Gryphon мы получаем обратную оболочку с правами root.

И мы можем выполнять произвольные команды внутри точки доступа.
