报告者:Marco Paciaroni (BomboBombone)。
Cargo 将 Drilldown 标签页标签存储在页面元数据中,并将其作为原始 HTML 渲染。当查看 Drilldown 页面时,由模板编辑者控制的标签可能变成可执行的标记。
CVE 记录将 Cargo 至 3.9.4 的版本标识为受影响。
攻击者需要拥有编辑声明 Cargo 的模板的权限。在启用公开 Cargo 查询的情况下,受影响 Drilldown 页面的访问者可能包括匿名用户和特权账户。脚本执行发生在 wiki 源中。
原始报告记录了一次由普通账户进行的模板编辑,以及一次匿名访问期间的浏览器执行。恢复普通标签后,观察到的行为消失。
上游变更使用文本转义的 HTML 辅助函数渲染标签链接标签,而不是将标签作为原始 HTML 接受。
python poc.py ExistingCargoTable Name --wiki https://wiki.example
该脚本会打印一个包含无害 DOM 标记的 Cargo 声明以及相应的 Drilldown URL。仅将其应用于你有权编辑的测试模板,然后恢复原始声明。