SockJS v0.3.19 在接收 WebSocket 升级请求时调用了 res.end 而不是 res.write。这会导致 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 <域名>
本仓库附带了一个运行易受攻击 SockJS 的演示 Meteor 应用程序。要在此演示应用上测试漏洞,请从 https://www.meteor.com/install 安装 Meteor,然后:
cd demo/
meteor
随后将载荷目标指向 http://localhost:3000
将 SockJS 更新至 0.3.20