
Proof-of-Concept-Exploit für CVE-2018-19131: Squid-Proxy-XSS über X.509-Zertifikat
Führen Sie damit nichts Illegales durch. Dies ist keine Malware. Dies ist nur ein Proof-of-Concept.
Dies ist eine Demonstration von CVE-2018-19131, die in einer Docker-Compose-Anwendung läuft.

Diese Bibliothek baut Squid Version 3.5.27, die anfällig ist. Version 3.5.28 ist nicht anfällig. Die betroffenen Versionen sind hier aufgelistet.
Tests waren sowohl unter Windows 10 als auch unter Mac OS X Mojave erfolgreich.
Führen Sie dies nicht auf demselben Host aus, von dem aus der Proxy konfiguriert ist, da der Proxy alle HTTP-Anfragen an sich selbst zurückleitet. Client und Server sollten zwei separate Maschinen sein.
git clone https://github.com/JonathanWilbur/CVE-2018-19131.git.cd CVE-2018-19131.docker-compose up.Die Einrichtung eines HTTPS-Proxys ist eine sehr standardmäßige Sache. Windows und MacOS haben es. Linux hat alles, wenn man kreativ ist. Ich werde hier nicht dokumentieren, wie man einen Proxy einrichtet, da dies bereits ausführlich anderswo dokumentiert ist. Konfigurieren Sie einfach Ihren Computer so, dass er auf den Server zeigt, auf dem Sie die anfällige Squid-Instanz installiert haben.
Ich möchte jedoch anmerken, dass Sie einen HTTPS-Proxy verwenden sollten, nicht HTTP. Unter MacOS heißt dies in den Proxies-Einstellungen ein Secure Web Proxy. Windows macht diese Unterscheidung nicht.
Rufen Sie die schädliche Seite auf, indem Sie sich mit https://web verbinden. Akzeptieren Sie den ersten Zertifikatsfehler, der lediglich durch das Abfangen des HTTPS-Verkehrs durch den Proxy verursacht wird. Anschließend wird Ihnen die nächste Seite angezeigt, die den Exploit ausführt. Sie sollten eine Browser-Warnmeldung mit HACKED! sehen.
Nachdem Sie OK geklickt haben, sehen Sie die Standard-Squid-Seite für einen Fehler bei der sicheren Verbindung. Sie werden feststellen, dass der angezeigte Aussteller-/Betreffname – der identisch ist, da ein selbstsigniertes Zertifikat verwendet wird – das commonName (CN)-Attribut fehlt. Das liegt daran, dass sein Wert war:
<script>alert("HACKED!");</script>
was als rohes HTML interpretiert wird und daher das Skript ausgeführt wird!
Wenn Sie Korrekturen oder Verbesserungen an dieser Bibliothek vorschlagen möchten, hinterlassen Sie bitte einfach ein Issue auf dieser GitHub-Seite. Wenn Sie mich aus anderen Gründen kontaktieren möchten, senden Sie mir bitte eine E-Mail an [email protected] (Mein GPG-Schlüssel) (Mein TLS-Zertifikat). 🐗