RSS Feed
更好更安全的互联网

read.html5.qq.com 图片中转 EXIF 跨站

2015-02-28

作者:周智@知道创宇研究团队

发布时间:2015.1.11

English:http://chichou.0ginr.com/blog/1023

---------------------------------------------------

漏洞分析

 

一、详细说明:

http://read.html5.qq.com/image?imageUrl=http://XXX

是为手机用户中转压缩第三方图片的服务,并使用了 HAProxy  做负载均衡。

实际测试发现,由于压缩中转没有过滤图片 EXIF 信息,导致页面内容可以被污染;而 HAProxy 存在错误配置,有相当大概率返回错误的 MIME 类型,导致浏览器将图片识别为 HTML 页面,执行恶意脚本。

z1

二、漏洞证明:

准备一张任意内容的位图,需要图片格式支持 EXIF。

在 EXIF 任意字段中添加恶意脚本,例如:

exiftool ‘-Make=<script>alert(/xss/)</script>’ test.jpg

z2

使用服务器发布到公网,通过修改后缀名为 htm 等方式,确保客户访问这张图片的 url 时候 Content-Type 返回 text/html。

PoC:

http://read.html5.qq.com/image?imageUrl=http://chichou.0ginr.com/wtf.htm

由于该服务使用了 HAProxy 做负载均衡,有可能返回正确的类型,也就是说存在一定概率失败。但只要刷新多次即可复现。

图为触发失败:

z3

经过一些测试,我们发现这个服务还支持 svg (矢量图)的缓存,返回给用户的是 jpeg 位图,但依然给出了错误的 MIME 类型。这个 MIME 类型的值与原图链接服务器返回的值是一样的(即有被控制的可能性,而且相当大)。

z4三、修复方案:

  1. 图片压缩服务中抹掉原图 EXIF 信息
  2. 检查 HAProxy 配置,返回正确的 Content-Type
  3. 考虑将此类服务部署到非主站域名(类似 gtimg 什么的?)

四、漏洞状态:

该漏洞已于 2015-01-22 16:00:20 标记为已修复。

 

作者:刘 开水 | Categories:技术分享 | Tags:

一条评论

  1. shooter说道:

    请教个问题 exiftool 用的什么工具呢? py shell ruby

发表评论