
CVE-2018-19131 の概念実証エクスプロイト: X.509 証明書を介した Squid Proxy XSS
これを使って違法なことをしないでください。これはマルウェアではありません。これは概念実証にすぎません。
これは CVE-2018-19131 のデモで、Docker Compose アプリケーションで実行されます。

このライブラリは、脆弱性のある Squid バージョン 3.5.27 をビルドします。バージョン 3.5.28 は脆弱性が_ありません_。影響を受ける特定のバージョンはここにリストされています。
テストは Windows 10 と Mac OS X Mojave の両方で成功しています。
プロキシを使用するように構成されている同じホスト上でこれを実行しないでください。プロキシがすべての HTTP リクエストを自身にリダイレクトしてしまうためです。クライアントとサーバーは別々の2台のマシンにしてください。
git clone https://github.com/JonathanWilbur/CVE-2018-19131.git を実行して、このリポジトリをクローンします。cd CVE-2018-19131 を実行して、ディレクトリに移動します。docker-compose up を実行して、アプリケーションをビルドします。HTTPS プロキシのセットアップはごく標準的なことです。Windows と MacOS にはそれが備わっています。Linux では工夫次第で何でも使えます。ここではプロキシのセットアップ方法を説明しません。それは他の場所で既に広範囲に文書化されているからです。コンピュータが、脆弱性のある Squid インスタンスをインストールしたサーバーを指すように設定するだけです。
ただし、HTTP ではなく HTTPS プロキシを使用する必要があることに注意してください。MacOS では、Proxies 設定でこれは Secure Web Proxy と呼ばれます。Windows にはそのような区別はありません。
https://web に接続して悪意のあるサイトにアクセスします。最初の証明書エラーを受け入れてください。これはプロキシが HTTPS トラフィックを傍受することによって引き起こされるだけです。次に、エクスプロイトを実行する次のページが表示されます。HACKED! と表示される Web ブラウザのアラートが表示されるはずです。
OK をクリックすると、安全に接続できなかった場合の既定の Squid ページが表示されます。表示される issuer/subject 名(自己署名証明書を使用しているため、両者は同じものです)に commonName(CN)属性が欠けていることに気付くでしょう。それは、その値が次のようになっていたからです:
<script>alert("HACKED!");</script>
これは生の HTML として解釈されるため、スクリプトが実行されます!
このライブラリに対する修正や改善を提案したい場合は、この GitHub ページに issue を残してください。その他の理由で連絡したい場合は、[email protected] までメールしてください(私の GPG 鍵)(私の TLS 証明書)。🐗