漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2013-026331
漏洞标题:用高德地图反射xss取访客位置和android-webkit xss
相关厂商:高德软件
漏洞作者: horseluke
提交时间:2013-06-19 17:41
修复时间:2013-08-03 17:42
公开时间:2013-08-03 17:42
漏洞类型:xss跨站脚本攻击
危害等级:低
自评Rank:5
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2013-06-19: 细节已通知厂商并且等待厂商处理中
2013-06-19: 厂商已经确认,细节仅向厂商公开
2013-06-29: 细节向核心白帽子及相关领域专家公开
2013-07-09: 细节向普通白帽子公开
2013-07-19: 细节向实习白帽子公开
2013-08-03: 细节向公众公开
简要描述:
因业务原因对GIS在线地图商进行了一些业务接触和开发,完成后就顺带进行了复查,然后发现一个各地图商常犯的反射xss错误。这里以高德为例,展示如何结合GIS业务特点借助xss做些有意思的事情,顺带实践SuperHei去年那篇基于android-webkit的xss。
详细说明:
(1)许多GIS在线地图商有提供基于url的跳转接口,用于直接跳到地图页面进行poi展示,比如高德的手机浏览器URI之地图标注:
http://mo.amap.com/?q=31.234527,121.287689&name=park&dev=0
(http://api.amap.com/URI/browser_guide)
不过许多时候GIS在线地图商会对某些用户自定义参数没有控制好,很容易导致xss发生,比如高德的反射xss参数在name。不过既然是在GIS,要xss总得要充分利用其业务价值,比如说:获取访客地理信息。
(2)SuperHei有一篇基于android-webkit的xss:
http://www.80vul.com/webzine_0x06/PSTZine_0x06_0x05.txt
根据文档中的内容和个人实践来看,只要Android 4.0以下,就一定有“[0day-NO.1]、android-webkit跨协议漏洞”,那么就等于只要网站有任意一个反射xss,那么就可以诱导访问手机受害者的一些特殊文件(视乎文件权限而定)。
漏洞证明:
此处结合新浪微博客户端的android-webview来演示。
(1)构造url:
这个url使用了地图中jquery提供的载入js方法直接载入,以此绕过xss筛选器。
http://t.cn/zH3lOn0 的重点代码:
(A)xss_tester.amap.getLocation方法中,通过AF.GeolocationService.getPosition方法当前访问者位置、以及通过AF.Geocoder.regeocode方法获取附近地标:
(B)xss_tester.amap.readLocalFile方法是照搬SuperHei的代码而写,在此感谢。
(2)将上面的url生成短链(这是因为直接发微博是发不到的;而tinyurl.com也会被微博拦截无法访问):
http://is.gd/dvgkzZ
(3)发微博
(4)诱导受害者访问
获得cookies:高德挂万漏一了,重要的sso登录信息passport_login键值刚好没有httponly保护。(此处以chrome访问为例)
利用高德接口,获得受害者的方位等信息:
(android < 4 有效)获得/system/build.prop内容(可读原因:other用户可读)
(android < 4 有效)获得/data/data/com.sina.weibo/shared_prefs/com.sina.weibo_preferences.xml内容,被遮盖处即为新浪微博的uid(可读原因:该webview是由微博启动)
修复方案:
以下建议针对高德地图,其他地图商请根据情况自行检查。
(1)修复手机浏览器URI之地图标注的参数name,做好html代码转义
(2)复查其他各类api(尤其是可以让用户输入参数的api)是否存在类似问题
(3)对cookies中的passport_login键值作httponly保护
版权声明:转载请注明来源 horseluke@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:5
确认时间:2013-06-19 19:19
厂商回复:
思路不错,感谢反馈
最新状态:
2013-06-24:已修复XSS