XSS姿式——文件上传XSS

XSS姿式——文件上传XSS

 原文连接:http://brutelogic.com.br/blog/javascript

0x01 简单介绍


一个文件上传点是执行XSS应用程序的绝佳机会。不少网站都有用户权限上传我的资料图片的上传点,你有不少机会找到相关漏洞。若是碰巧是一个self XSS,你能够看看这篇文章。java

0x02 实例分析


首先基本上咱们均可以找到相似下面的一个攻击入口点,我以为这个并不难。安全

姿式一:文件名方式

文件名自己可能会反映在页面因此一个带有XSS命名的文件即可以起到攻击做用。dom

p1

虽然我没有准备靶场,可是你能够选择在W3Schools练习这种XSS 。xss

姿式二:Metadata

使用exiftool这个工具能够经过改变EXIF  metadata进而必定概率引发某处反射:svg

$ exiftool -field = XSS FILE

例如:函数

$ exiftool -Artist=’ “><img src=1 onerror=alert(document.domain)>’ brute.jpeg

p2

姿式三:Content

若是应用容许上传SVG格式的文件(其实就是一个图像类型的),那么带有如下content的文件能够被用来触发XSS:工具

<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"/>

一个 PoC用来验证。你能够经过访问brutelogic.com.br/poc.svg看到效果网站

姿式四:Source

创建一个携带有JavaScript payload的GIF图像用做一个脚本的源。这对绕过CSP(内容安全策略)保护“script-src ‘self’”(即不容许使用示例的这种xss方式进行攻击<script>alert(1)</script>)是颇有用的,但前提是咱们可以成功地在相同的域注入,以下所示。this

p3

要建立这样的图像须要这个做为content 和 name,并使用.gif扩展名:

GIF89a/*<svg/onload=alert(1)>*/=alert(document.domain)//;

这个GIF的图片头——GIF89a,做为alert function的变量分配给alert function。可是他们之间,还有一个被标注的XSS变量用来防止图片被恢复为text/HTML MIME文件类型,所以只需发送一个对这个文件的请求payload 就能够被执行。

正如咱们下面看到的,文件类unix命令和PHP函数中的exif_imagetype()和getimagesize()会将其识别为一个GIF文件。因此若是一个应用程序仅仅是使用这些方式验证是不是一个图像,那么该文件将能够上传成功(但可能在上传后被杀掉)。

p4

0x03 最后


若是你想知道更多的有其标志性ASCII字符能够用于一个javascript变量赋值的文件类型,看我随后的文章。

也有不少比较详细的使用XSS和图像文件相结合绕过图形处理函数库过滤的例子。这方面的一个很好的例子是here

相关文章
相关标签/搜索