对于现代社会来说,网络办公系统、教育网系统、企业内部管理系统等等网络系统都会带有网络打印功能,这种功能的提供在技术实现上一般会采用浏览器控件的方式,因为以上诸多网络系统的多采用B/S模式,处于用户端的使用界面就是浏览器,而浏览器要支持复杂的打印功能就需要采用ActiveX控件的模式。但是,在享受这些控件提供的丰富功能时,安全问题往往被我们忽略,在对多个单位内部的网络系统进行安全测试时,我们发现了关于打印控件的严重安全隐患,甚至借助这些打印控件直接可以部署恶意程序到网内任意终端,危害极大。这里我们选择了国内排行靠前的两个打印控件作为测试对象,向大家展示一下木马是如何被“打印”在你的电脑上的。首先测试的对象是Lodop控件,它是泰安梦泰尔软件有限公司开发的一款打印控件,这里测试的版本为6.1.9.4。在系统中安装好该控件后,它会注册多个接口,其中有一个名为“IS_FILE_EXIST”的接口,从字面上我们可以直接判断该接口的用处就是用来判断当前主机本地磁盘上是否存在某个文件。这类接口出现在很多打印控件上,其目的多半都是为了判断被打印文件的存在或者系统文件的存在。但是从安全角度出发,我们完全可以利用该接口判定用户主机上的敏感文件存在,甚至利用这种判断,判定该用户主机的操作系统版本。它的判断效果如图1所示。
如果说这种文件判定式的安全问题还不算什么,那么Lodop控件为我们又带来了更加有趣的接口—GET_SYSM_INFO。毫无疑问,这是一个用来获取客户主机信息的接口,它实现出来的效果会是什么呢?如图2所示。
图2
令人吃惊的画面不是吗?我主机上的磁盘盘符数量、硬盘序列号、MAC地址等等都被成功读取!现在我想问:我还有啥你不知道的?
虽然说Lodop控件出现了以上的安全问题,但是这还不是严重的。下面出场的这个打印控件就会给我们带来惊喜!
JatoolsPrinter又被叫做“杰表”打印控件,如图3所示。
它提供的接口很多,其中我们最为关注的是一个名为“logPage”的接口,如图4所示。
logPage”有两个参数:path和html,看起来这两个参数的作用应该是将html写入path。写一个测试页面来看看,代码如下所示:
object id=evil/object script cla=clsid:B43D3361-D075-4BE2-87FE-057188254255 evil.logge(c:\\1.bat,cmd) /script
将上述代码保存为index.html,放置在Web服务器上,远程打开该测试页面,惊喜的
事情终于发生了!如图5所示。
图5中最后一行的1.bat文件是被我们所打开的index.html文件创建的,准确地说应该是由jatooPrinter控件的“logPage”接口创建,因此我们可以直接利用“logPage”
接口将命令代码写入用户主机的开机启动目录,当然也可以利用批处理写入二进制数据,一步一步将木马病毒程序远程植入用户主机,最终获取到远程管理权限。
在测试过程中,我们发现打印控件在设计上都存在雷同的地方,例如对本地文件的读取或者写入,只是有一些控件会提示用户是不是允许这种操作,而多数控件都采用静默处理,这就使得安全漏洞得以出现。信息泄露加上文件写入,这就可以让恶意攻击者非常轻松地渗透进入用户的主机,打印控件在提供打印功能的同时,是不是也应该防止把木马病毒“打印”在用户主机上呢?
本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,作者不鼓励或支持任何形式的非法行为。