
Preuve de concept d'exploitation de CVE-2018-19131 : XSS dans Squid Proxy via certificat X.509
Ne faites rien d'illégal avec ceci. Ce n'est pas un logiciel malveillant. C'est juste une preuve de concept.
Ceci est une démonstration de CVE-2018-19131, qui s'exécute dans une application Docker Compose.

Cette bibliothèque compile la version 3.5.27 de Squid, qui est vulnérable. La version 3.5.28 n'est pas vulnérable. Les versions particulières concernées sont listées ici.
Les tests ont réussi à la fois sur Windows 10 et sur Mac OS X Mojave.
N'exécutez pas ceci sur le même hôte que celui à partir duquel vous êtes configuré pour utiliser le proxy, car le proxy redirigera toutes les requêtes HTTP vers lui-même. Le client et le serveur doivent être deux machines distinctes.
git clone https://github.com/JonathanWilbur/CVE-2018-19131.git.cd CVE-2018-19131.docker-compose up.La configuration d'un proxy HTTPS est une chose tout à fait standard. Windows et MacOS l'ont. Linux a tout ce qu'il faut si vous êtes créatif. Je ne documenterai pas ici comment configurer un proxy, car cela est déjà documenté abondamment ailleurs. Configurez simplement votre ordinateur pour qu'il pointe vers le serveur sur lequel vous avez installé l'instance vulnérable de Squid.
Je noterai toutefois que vous devez utiliser un proxy HTTPS, et non HTTP. Sur
MacOS, dans les paramètres Proxies, cela s'appelle un Secure Web Proxy. Windows
ne fait pas cette distinction.
Accédez au site malveillant en vous connectant à https://web. Acceptez la première
erreur de certificat, qui est simplement causée par le proxy qui intercepte le
trafic HTTPS, puis vous verrez la page suivante, qui exécutera
l'exploit. Vous devriez voir une alerte du navigateur web indiquant HACKED!.
Après avoir cliqué sur OK, vous verrez la page Squid par défaut pour un échec de
connexion sécurisée. Vous remarquerez que le nom de l'émetteur/sujet affiché—qui sont
une seule et même chose, car cela utilise un certificat auto-signé—ne comporte pas
l'attribut commonName (CN). C'est parce que sa valeur était :
<script>alert("HACKED!");</script>
qui est interprétée comme du HTML brut et, par conséquent, le script est exécuté !
Si vous souhaitez suggérer des corrections ou des améliorations pour cette bibliothèque, veuillez simplement laisser un problème sur cette page GitHub. Si vous souhaitez me contacter pour d'autres raisons, veuillez m'envoyer un e-mail à [email protected] (Ma clé GPG) (Mon certificat TLS). 🐗