http://read.html5.qq.com/image?imageUrl=http://XXX
是为手机用户中转压缩第三方图片的服务,并使用了 HAProxy 做负载均衡。
实际测试发现,由于压缩中转没有过滤图片 EXIF 信息,导致页面内容可以被污染;而 HAProxy 存在错误配置,有相当大概率返回错误的 MIME 类型,导致浏览器将图片识别为 HTML 页面,执行恶意脚本。
准备一张任意内容的位图,需要图片格式支持 EXIF。
在 EXIF 任意字段中添加恶意脚本,例如:
使用服务器发布到公网,通过修改后缀名为 htm 等方式,确保客户访问这张图片的 url 时候 Content-Type 返回 text/html。
PoC:
http://read.html5.qq.com/image?imageUrl=http://chichou.0ginr.com/wtf.htm
由于该服务使用了 HAProxy 做负载均衡,有可能返回正确的类型,也就是说存在一定概率失败。但只要刷新多次即可复现。
图为触发失败:
经过一些测试,我们发现这个服务还支持 svg (矢量图)的缓存,返回给用户的是 jpeg 位图,但依然给出了错误的 MIME 类型。这个 MIME 类型的值与原图链接服务器返回的值是一样的(即有被控制的可能性,而且相当大)。
三、修复方案:
该漏洞已于 2015-01-22 16:00:20 标记为已修复