WEB渗透与网络安全

XSS SVG

2019-10-08  本文已影响0人  原来是老王

介绍

跨站点脚本(XSS)是一个非常常见的漏洞,涉及在网页中注入javascript代码。从窃取用户Cookie到通过CORS绕过SOP,此漏洞可用于执行各种操作。有许多方法可以定位XSS漏洞,通常会忽略SVG文件。

SVG文件

可缩放矢量图形(SVG)是用于二维图形的基于XML的矢量图像格式,并支持交互性和动画。

以下代码是基本SVG文件的示例,该文件将显示矩形图片:

<svg width="400" height="110">
  <rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)" />
</svg>

SVG文件还支持嵌入式javascript代码。例如,开发人员可能在svg图像中使用javascript,以便他们可以实时进行操作。这可以用于动画和其他任务。

要注意的另一件事是,SVG文件可以视为HTML中的图像。这意味着您可以将SVG文件放置在图像标签中,并且可以完美呈现:

<img src="rectangle.svg" alt="Rectangle" height="42" width="42">

Xss Payload

如果网站使用XSS有效负载加载SVG文件,则将执行该文件。开发人员和攻击者都经常忽视这一点。以下是带有警报XSS有效负载的SVG文件示例:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
   <rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)" />
   <script type="text/javascript">
      alert("SVG XSS");
   </script>
</svg>

测试此漏洞的一种简单方法是上传SVG文件作为您的个人资料图片,如以下请求所示:



注意内容类型设置为:

Content-Type: image/svg+xml

上传图像后,您只需找出图像上载到的路径即可。如果您使用的是Google chrome,则可以通过右键单击图片并选择“复制图片地址”来轻松完成此操作。如果在查看图像时一切正常,则将执行有效负载。您只是通过SVG文件存储了XSS。


上一篇 下一篇

猜你喜欢

热点阅读