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

www.webshell.cc..\..\..\..\..\..\..\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.webshell.cc..\..\..\..\..\..\..\Windows\System32\cmd.exe
start www.webshell.cc..\..\..\..\..\..\..\Windows\System32\cmd.exe

就明白了。

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

我猜是腾讯调用的API:ShellExecute。

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

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

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

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

转载请注明来自WebShell'S Blog,本文地址:https://www.webshell.cc/3658.html