
SockJS v0.3.19 は、websocketアップグレードリクエストを受信した際に res.write の代わりに res.end を呼び出します。これにより Error [ERR_STREAM_WRITE_AFTER_END]: write after end が発生し、脆弱なSockJSを使用しているアプリを実行するコンテナがクラッシュします。
影響を受ける脆弱なバージョン:
このPOCは、/sockjs でSockJSを実行している脆弱なMeteorJSアプリを対象としています。SockJSを実行している他のWebアプリにカスタマイズするには、ペイロードを /sockjs からSockJSが管理する対応するルートに変更してください。
Pythonをインストールし、cmd/ターミナルで次のコマンドを実行してください:
pip install requests
python poc.py --target <domain>
脆弱なsockjsを実行するデモMeteorアプリが含まれています。このデモアプリでエクスプロイトをテストするには、https://www.meteor.com/install からMeteorをインストールし、次のコマンドを実行してください:
cd demo/
meteor
その後、ペイロードのターゲットを http://localhost:3000 に指定します。
SockJSを0.3.20にアップデートしてください。