在《[多图]输入法漏洞再现Windows 8 利用qq拼音纯净版实现提权 》这篇文章里,作者发现一个通过"远程桌面的输入法漏洞"进行提权,从而达到控制Winows 8远程机器的方法。这里面是什么原理呢?
当我们看到远程桌面显示登录界面的时候,因为这个时候并没有已经登陆的用户,所以这个阶段开启的所有应用都是以系统权限运行的。 一个以系统权限运行的应用程序在执行相当多的操作时都是不需要进行提权的,而由这个应用开启的其他应用程序,同样也以系统权限运行,这就是为什么我们看到该文作者可以直接通过net.exe命令成功添加管理员账户的原因(系统账户外的用户账户在运行这个命令时都需要提权)。
然而这并非Windows设计上的漏洞,这个入侵之所以能够成功,是因为这台Windows 8机器上极其愚蠢的配置。这就好比银行没锁好金库的大门,然后在失窃后却怪门锁不给力……实际上,不安全的不是操作系统,而是用户本身。下面我们具体来看看究竟是哪些不安全的设置导致机器被入侵。
错误1 :使用不安全的第三方输入法作为默认输入法
经过测试发现,如果不使用第三方输入法作为默认输入法,在登录界面是无法调出这些第三方输入法的,只能使用系统本身的输入法。而自带的输入法根本无法调用浏览器(或者其他程序)。让一个不安全的程序在登录界面运行,这就已经相当危险了,因为这些程序全部会以无需提权的系统权限运行的。假如这个程序不是调用浏览器,而直接调用网络上的恶意程序,那根本就是无解的事情。
错误2 :使用了不安全的远程桌面验证方式
传统的远程桌面连接是先打开rdp会话把登陆界面呈现出来,这就导致了本例中远程用户可以直接访问登陆界面上的程序这个问题。而Network Level Authentication是微软在Vista之后引入远程桌面的一个机制,它的原理是先让用户在本地验明正身之后才打开rdp会话,这就避免了在远程计算机上载入整个登陆界面,同时也可以一定程度地避免了DDoS之类的攻击。这项设置在配置Win8远程桌面时默认是启用的,但不知道为什么本案例里的Win8机器没有启用,可能是为了让较低版本的远程桌面也能顺利连接的缘故罢。
说了这么多,其实都是要提醒下大家,系统本身的安全机制对于一般人来说都是足够的了,但如果你把这些安全机制都取消了,那么你用Win8还是XP在安全性上还真没什么区别。有一些半桶水的用户关掉了UAC,使用着内置管理员,以为自己装个第三方的流氓安全管家就算是真正安全了,图样图森破了啊。
注:qq输入法的漏洞不知道是什么时候被发现的,但已经在最新版本中修正了,现在也没有新出现其他通过qq输入法调出IE浏览器的方法。qq拼音的开发团队还是挺给力的,不存在没有漏洞的软件,能够尽快地修复漏洞就是安全的软件。