利用文件上传实现XSS攻击是一个Hacking Web应用的很好机会,特别是无处不在的用户头像上传案例中,这就给予我们很多发现开发者错误的机会。基本的文件上传 XSS 攻击有以下几种。
1) 文件名
文件名本身可能就是网页的一部分可以造成反射,所以可以通过将 XSS 语句插入文件名中来触发反射。
尽管不是有意为之,但是这个 XSS 可以实践在Z q D W3Schools。
2) 元数据
使用 exiftool 工具可以j ] f n _ 2 K修改 EXIF 元数据,从而在某些地方造成反射:
$ exiv T U [ J {ftool -FIELD=XSS FILE
例子:
$ exiftool -Artist=’ “><img src=1 onerror=alert(do# I _ A # b V Hcument.domain)>’ brute.jpeg
3) 内容
如果 Web 应用允许上传 SVG(一种图像类型)扩展名,则以下内容可以用来触发 XSS:
<svg xmlns=\"http://www.w3.org/2000/svg\" onload=\"alert(document.domain)\" 7 _ ] $ d ) -/>
一个 POC 可以在这里看到 brutelogic.com.br/poc.svg。
4)源码
我们可以很容易的创建一张包含 jav/ l = ? p F ~ Mascript payH ; S zload 的 GIF 图片,然后将这张图片当做源码加以引用。如果我们可以成功的注入相同的域名,如下所示,则这样可以有效的帮我们绕过 CSP(内容安全策略)防护(其不允许执行例如<script>alert(1)</script>)
创建这样一7 D . c k A . X张图片可以使用. . I n B N c ^ %如下内容并将文件命名为 .gif 后缀:
GIF89a/*&} j 3 w U H n C elt;svg/onload=alert(1)>*/=alert(document.domain)//;
GIF 文件标识 GIF89a 做为一个 javascrf D E G K X U U Uipt 的变量分配给 alert 函数。中间注释部分的 XSS3 ) w q y ; x l 1 是为了以防图像被Q C / U . R v I !检索为 text/HTML MIME 类型时,通过请求文件来执行 payload。
我们通过下图可以发现,类 UNIX 命令的 PHP 函数 exiH 6 [ @f_imagetype() 和 getimagesize() 都会将这个文件识别为 GIF 文件。而一般的 Web 应用都是使用这些函数来验证图像类型的,所以这` @ ] 0 B p样一个文件是可以被上传的(但上传后可能会被杀毒软件查杀)。
点击关注我的头: v o i u % - ` |条号,0基础掌握更多黑客秘籍
私信回复‘’资料‘’领取更多技术文章和学习资料,加入专属的安全学习圈一起进步
安界
安界贯彻人才培养理念,结合专业研发团队,打造课程内容体系,推K = y ( T进实训平台发展,通过一站式成长计划、推荐就业以及陪护指导的师带徒服务,为学员的m t { . I M M + O继续学习和职业发展保驾护航,真正实现和完善网络安全精英的教练场平台;
关注私信‘资料’
如果你想实现进高企、就高职、拿高薪,即使低学历也可实现职业发展中的第一个“弯道超车”!赶紧私+ l V . ^ P - U H信我!等你来!