发布:2019年11月14日14:51 UTC
更新:08年9月20日在UTC 12:23
在测试内部SVG清洁剂时,我花了一些时间看着采用
元素。基本上它允许您引用其他SVG元素,并将其包含在SVG文档中。您可以使用哈希参考同源URL或链接到页面上的某些ID。我在内部报告了这个问题,但它被拒绝,因为你需要将SVG上传到同一个原点以便利用它。所以当然我的下一个想法是让它工作交叉起源。Chrome,Firefox和Safari都防止SVG被包括交叉来源。虽然老边不同,但是可以包括来自不同的原点的SVG,只要您包括结束标题访问 - 允许 - 横向原点:*。最初我在外部SVG中包含了一个JavaScript URL,虽然元素是可点击的JavaScript URL未调用警报
。
我修改了该文件并尝试注射一个onclick.
事件和我的惊喜onclick.
事件从外部域触发。我仔细检查域是通过调用的目标域警报(Document.Domain)
谢天谢地,它显示了正确的域名。然后发现您可以修改外部SVG,并使向量自动执行,无需点击使用图片
元素。
注射是:
这是外部SVG的样子:
<?PHP.
标题(“访问控制允许原点:*“);
标题(“Content-type:image / svg + xml”);
?>
然后,我测试了AngularJS,它也在那里工作,因为它们在版本<1.5.0中允许SVG。这是在AngularJS 1.4.9上工作的完整概念证明。
请注意,稍后版本的AngularJS不易受攻击,因为它们不允许SVG。