腾讯TM、QQ远程命令执行漏洞 点开QQ消息 执行本地文件、命令

漏洞效果

当用户发送此类格式“网址”的时候:

www.baidu.com..\..\..\..\..\..\..\Windows\System32\cmd.exe

对方接收之后,点击鼠标左键打开该网址的时候,会被当成路径打开,从而可以恶意执行一些程序、系统命令,造成严重安全隐患。

漏洞原理很简单,不解释了……

条件如下:

1、不能 url 编码,只能明文,囧rz……

2、不能使用中、英文空格,路径会被“打断”。(可以试试自定义发包构造一下,或者尝试一下 Web 端发送。)

3、不能存在 % 号等特殊字符,原因和第一条一样。

4、不能跨分区,例如:..\..\c:\..\Windows\System32\cmd.exe,如果对方QQ没有安装在系统盘,那么效果会大大折扣。

5、网址必须是可信网址,才可以直接点开。

6、字符串长度有限制,大概255字节左右。

空格是个蛋疼问题,不能带参数执行程序了,也许可以试试特殊字符。

可以试试跟踪一下函数调用过程,也许可以直接写入 ShellCode。

严格的来讲,这个不是腾讯自身的问题,是腾讯调用的api的问题,没有明确指定是文件还是网址,Windows 则会优先调用文件,你可以试试用CMD执行:

dir www.baidu.com..\..\..\..\..\..\..\Windows\System32\cmd.exe

start www.baidu.com..\..\..\..\..\..\..\Windows\System32\cmd.exe

就明白了。

字符串:www.baidu.com,被系统当成了一个文件或者目录。

我猜是腾讯调用的API:ShellExecute

ShellExecute 的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。

ShellExecute,可以打开文件、路径,或者调用与之关联的程序打开,例如:图片、音乐、网址等,问题出在这……

在没有明确指定是文件还是网址的情况下,Windows 会优先调用文件……

回顾历史,腾讯在处理网址中特殊字符的时候一直存在各种各样的问题,历史上也有过此类“远程命令执行”漏洞,甚至还有爆内存的,例如:腾讯 QQ、TM 远程读取内存数据漏洞、可导致远程溢出、拒绝服务攻击

2012-5-24 9:46:17 补充:

貌似所有聊天类工具都受此漏洞影响,利用方法类似。

例如:新浪微博点开好友消息 执行本地文件、命令

2012-5-23 19:17:30 补充:

关于漏洞无效的疑问……

腾讯大概在“2012-05-23 16:30”左右进行了紧急修复,从服务器端过滤了这些链接,所有此类链接都会显示不信任、可疑、带问号的(腾讯提示存在多重跳转,请用户谨慎打开),所以无法直接点击打开……

同时看到乌云有几位白帽子对提前公开漏洞表示不解,在这里解释一下……

这个漏洞不是我发现的,我也不知道是谁发现的,只是某地方略提了一下,然后花了点时间作了一些研究、分析,本来打算提交到乌云的,结果跑去一看有人抢先了几十分钟,于是到博客写了个详细分析文章。

至于公布嘛……

目测这个漏洞不好利用,有些鸡肋,所以……

我本人不是很赞成白帽子们主动给厂商当遮羞布我们没有这个义务,而且有的厂商提交了漏洞还爱理不理的,更有甚者还反咬一口,白帽子们提交的大部分漏洞厂商也没有任何回报,从另外一个角度讲,给他们公开一点东西,可以“刺激”他们主动做好产品安全……

我倒很赞成国外的“赏金黑客”挖洞模式,白帽子可以通过努力获得可观的回报,这点钱对厂商来说连个零头都不到,但是可以刺激白帽子挖掘更有价值的漏洞,厂商也会在第一时间得到更有价值的漏洞,也不会被公开到处流传。

而我们国内白帽子们呢?干的却是吃力不讨好的事。

以前,国内的网络公司根本就不会去关注互联网上流传的产品漏洞,更别提主动去网上查找漏洞相关信息、联系漏洞发现者了,顶多只是在漏洞大规模利用爆发之后,或本公司的安全人员无意间看到后,才会注意到这些信息,然后修复,但这可能已经过了很久,这中间会浪费很多时间……

国内的厂商,好一点的,自己都有个内部安全部门,自查产品漏洞、修补。但是,对外,却没有任何一家公司有专门接收、处理公众提交漏洞的部门。所以,对公众发现的漏洞仍是很难及时知晓……

后来,乌云站了出来,靠着白帽子之间的人际关系,联合这些内部安全部门,组成了一个第三方漏洞提交平台,处理公众提交的漏洞。

刚开始,乌云仅仅是依靠在这些部门中工作的白帽子之间的人际关系,进行艰难地运作,无偿、主动帮这些厂商修复安全问题。

后来,乌云渐渐的有了名气,引来了一批厂商主动注册,并安排一个负责人关注这个平台,但是其中一些负责人压根不懂安全,造成了乌云一些搞笑的厂商回复。

国内很多厂商仍是不重视产品安全,只是敷衍了事、例行公事,而且对提交漏洞的白帽子很不友好,国内形势可以用四个字来概括:掩耳盗铃。

漏洞修补本身就是个双方都要积极参与的事情,并不是让其中一方卖力的干活,热脸贴冷屁股。只有厂商主动起来,双方都积极配合,才会改变目前国内尴尬的现状。

当然,以国内的形势来看,也许近期不会实现,毕竟国内的安全才刚刚起步……

以上内容,纯属扯淡,如有不妥,当没看见。

留言评论(旧系统):

【匿名者】 @ 2012-05-23 17:07:37

打开链接是,QQ提示“改网址包含多重跳转,可能存在风险”

本站回复:

因为腾讯在做紧急处理。

【匿名者】 @ 2012-05-23 17:13:54

现在接收到此类网址,默认安全级别为未知,所以不能直接左键点击打开链接了。应该是腾讯处理了吧。

本站回复:

腾讯大约在半个小时前开始做紧急处理的。

hookit @ 2012-05-24 01:33:32

老核说的好,,,,妈的我提交了几个洞子以为有娃娃给我爆菊花!结果连毛都没有shit

本站回复:

这要求有点过了。。。 -_-|||

possible @ 2012-05-24 17:50:51

写的很好... 这个验证 有意思(请问宇宙第一强国是 韩国?)

本站回复:

哈哈哈,多谢支持。韩国如今不是吹嘘自己是第一强国么。。。如它所愿。。。 ╮(╯_╰)╭

晴天小铸 @ 2012-05-24 18:05:57

win XP 测试失败

本站回复:

╮(╯_╰)╭ 腾讯已修复。。。

【匿名者】 @ 2012-05-28 17:24:12

什么叫吃力不讨好?别人厂商又没恳求你这样做,白帽子们不过是自作多情罢了。

本站回复:

呵呵,你总算明白了,所以,厂商凭什么要求我不公开你的漏洞?我公不公开关你厂商屌事?给厂商提醒下都算仁至义尽了…… 除非厂商打算使用同等的价值交换,这才有可能如厂商所愿。

晴天小铸 @ 2012-07-06 09:12:33

看了核叔叔和wooyun几个列子总结了几个规律: 这个是win api调用BUG,很多程序忽略了这个BUG(就像加载lpk阿这些东西程序没指定位置的话一般那个进搞哪个。) 呵呵 核叔叔有找到哪几个win下api调用有趣的函数来分享下洛。还说下.个人认为写Shellcode应该不成立,太多限制了。如果核叔叔有突破思路调教下洛。

本站回复:

ShellExecute 函数可以写 ShellCode。

晴天小铸 @ 2012-07-06 14:56:06

今天特意看了看黑防的缓冲区溢出pdf 实现shellcode应该可以\x号没问题应该ok 255字符搞个精简shellcode

本站回复:

255字节足以干很多事了。

【匿名者】 @ 2012-09-17 20:51:53

核大好崇拜你哦!

本站回复:

-_-|||