XSS姿势——文件上传XSS

Zeroyu 2016-04-15 10:14:00

原文链接:http://brutelogic.com.br/blog/

0x01 简单介绍


一个文件上传点是执行XSS应用程序的绝佳机会。很多网站都有用户权限上传个人资料图片的上传点,你有很多机会找到相关漏洞。如果碰巧是一个self XSS,你可以看看这篇文章。

0x02 实例分析


首先基本上我们都可以找到类似下面的一个攻击入口点,我觉得这个并不难。

姿势一:文件名方式

文件名本身可能会反映在页面所以一个带有XSS命名的文件便可以起到攻击作用。

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

姿势二:Metadata

使用exiftool这个工具可以通过改变EXIF  metadata进而一定几率引起某处反射:

$ exiftool -field = XSS FILE

例如:

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

姿势三: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>)是很有用的,但前提是我们能够成功地在相同的域注入,如下所示。

要创建这样的图像需要这个作为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文件。所以如果一个应用程序仅仅是使用这些方式验证是否是一个图像,那么该文件将可以上传成功(但可能在上传后被杀掉)。

0x03 最后


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

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

评论

R

range 2016-04-15 10:29:54

牛逼

默之 2016-04-15 10:32:13

脑洞大开

路人甲 2016-04-15 10:36:33

mark

Z

Zeroyu 2016-04-15 11:01:29

@range 捕捉一只ran牛

路人甲 2016-04-15 11:13:41

mark

路人甲 2016-04-15 12:56:25

mark

路人甲 2016-04-15 13:23:01

没看明白这篇文章跟self xss有什么关系

路人甲 2016-04-15 16:08:18

好水啊......

E

Explo1t 2016-04-15 21:07:34

脑洞嗷嗷嗷嗷嗷

路人甲 2016-04-17 13:48:53

记得有一年的iscc的题目就是图片exif里写一个xss。

K

Kevini 2016-04-17 16:11:46

标题反了吧

D

dafeng 2016-04-17 16:13:02

总结的不错

Z

Zeroyu 2016-04-23 15:44:52

https://en.wikipedia.org/wiki/List_of_file_signatures
文件签名

S

smarttang 2016-05-02 15:55:37

真心牛逼。。。

Z

Zeroyu 2016-05-05 21:26:42

@Kevini 呃?有吗?习惯这样写了

Z

Zeroyu 2016-05-05 21:27:10

@aaa 都是大脑洞

Z

Zeroyu

The quieter you become,the more you are able to hear.

twitter weibo github wechat

随机分类

Windows安全 文章:88 篇
Java安全 文章:34 篇
Android 文章:89 篇
Ruby安全 文章:2 篇
安全开发 文章:83 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Yukong

🐮皮

H

HHHeey

好的,谢谢师傅的解答

Article_kelp

a类中的变量secret_class_var = "secret"是在merge

H

HHHeey

secret_var = 1 def test(): pass

H

hgsmonkey

tql!!!

目录