分类: 系统运维
2009-12-23 15:21:54
添加者: 发布时间:2008-1-6 | ||||||||||||||||||
http://sally.blog.51cto.com/31969/57902
2004年开始,网络上开始流传一种新型的WebShell后门。这种后门的优点在于体积小巧,最小的一句话后门长度仅为22个字节。 正因为如此,很多黑客习惯将这样的脚本插入到站点的一些正常脚本代码中,从而逃避管理员的眼睛,达到后门的目的。 比较出名的有IcyFox的微型ASP木马、海阳顶端ASP木马C/S版、Lanker的微型PHP木马。 那么,我们该如何防范一句话后门的攻击呢? 一句话后门通常以一个执行函数为载体,因为体积小且函数本身使用的比较普遍,导致杀毒软件在特征码的判断上存在疑虑而不敢擅自进行查杀(至少笔者看到的杀毒软件中,没有一个对一句话木马进行查杀)。 以ASP为例,一句话后门类似“<% Execute(Request("K")) %>”。我们来分段看看这句话的含义。 首先Request("k")是来自Client端提交的脚本,这是由黑客提交的数据,服务端只负责接收这个数据。 接着这个数据被交给Execute函数来执行,也就是对脚本解析并执行的过程。这样,只要通过脚本来进行的行为都将在服务端执行,也就对服务端造成了威胁。 从中我们不难发现,整个过程中,关键的部分如Execute是只运行在服务器中的,而Request则是个连接黑客和Server的纽带。 请不要只想着Execute函数,这不过是个傀儡。我们要做的是切断黑客与傀儡之间的联系桥梁,这样,傀儡再怎么强大也将变得没有用处。 因此,笔者的思路是在黑客们提交脚本数据时对他们进行检测。下面是笔者写的一段脚本代码,仅供大家参考。 <% (编辑:无影无踪) 更新时间: 关 键 词: 阅读提示:我们都知道,在网络中Microsoft SQLServer的入侵最常见的就是利用SA弱口令入侵了,而核心内容就是利用Microsoft SQLServer中的存储过程获得系统管理员权限,那到底什么是存储过程?为什么利用它可以获得系统Microsoft SQLServer是一个c/s模式的强大的关系型数据库管理系统,应用领域十分广泛,从网站后台数据库到一些MIS(管理信息系统)到处都可以看到它的身影。我们都知道,在网络中Microsoft SQLServer的入侵最常见的就是利用SA弱口令入侵了,而核心内容就是利用Microsoft SQLServer中的存储过程获得系统管理员权限,那到底什么是存储过程?为什么利用它可以获得系统管理员权限? 存储过程是存储在SQLServer中的预先写好的SQL语句集合,它分为三类:系统提供的存储过程,用户定义的存储过程和扩展存储过程。 SA是Microsoft SQLServer的管理员帐号,拥有最高权限,它可以执行扩展存储过程,并获得返回值,比如执行:
这样对方的系统就被添加了一个用户名为test,密码为12345,有管理员权限的用户,现在你应该明白为什么得到SA密码,就可以得到系统的最高权限了吧。下面就详细的讲一下Microsoft SQLServer中利用SA弱口令的攻击与防范。 通常当我们扫描到一台有Microsoft SQLServer SA弱口令的机器,都会用一些专门的攻击工具,比如SqlExec,如图x.1所示,SuperSQLEXEC,如图x.2所示,以及SQL综合利用工具,如图x.3所示。
可是在实际操作中,情况并不象我们的那样简单,我们上传木马程序后,一般都会被对方的杀毒软件杀掉。而且经过使用SQL事件探查器(可以通过安装Microsoft SQLServer获得)对SQL综合利用工具提交的SQL语句抓取发现,要使SQL综合利用工具上传功能成功完成,有个前提条件就是对方Microsoft SQLServer中的存储过程xp_cmdshell没有被删除,如图x.4所示,否则无法成功执行,也就是说就算我们的木马可以不被查杀,无法执行上传功能也是没有用的。
但如果对方把Microsoft SQLServer中的xplog70.dll文件删除或放到其他地方了, xp_cmdshell就无法执行我们发出的命令了。 难道就没有其他办法了?当然不是,在Microsoft SQLServer中有一系列与OLE相关的存储过程,这一系列的存储过程同Xp_cmdshell以及读取注册表系列的存储过程一样危险,但是其使用方法不象那些存储过程在网络上和书上介绍的那样多,所以被删除的可能性就小一些。这系列的存储过程有sp_OACreate,sp_OADestroy,sp_OAGetErrorInfo,sp_OAGetProperty,sp_OAMethod,sp_OASetProperty,sp_OAStop。 使用查询分析器连接到对方的Microsoft SQLServer,在查询分析器中执行:
如果对方把Xp_cmdshell、SP_OACREATE等可执行系统命令的存储过程,以及与它们相对应的动态连接库文件删除了,我们还有一个办法,就是使用可以读取和修改注册表的存储过程来克隆对方系统的管理员用户。在查询分析器里运行下面的语句:
可以得到对方系统administrator的加密密码,然后复制,如图x.6所示。
如果对方有远程终端服务,那我们就可以用Guest用户登陆,密码为空,而且Guest的桌面与administrator的完全一样。 有很多种方法得到Microsoft SQLServer SA的密码,比如通过Sniffer到SA的加密密码,然后通过密码对照表(网上可以找到),得到SA的明文密码,再比如通过SQL注入得到SA密码或者使用sp_password(修改数据库用户密码的存储过程)修改得到SA密码,还有可以挂密码字典进行暴力破解。一旦被SA密码被入侵者得到,会对服务器的安全带来很大隐患,所以我们整理了一个解决方案提供给大家: 1.在确定不需要的情况下,删除xp_cmdshell,xp_dirtree,xp_regread,xp_regdeletekey,xp_regdeletevalue,xp_regwrite,sp_oacreate,sp_oadestroy,sp_oagetErrorInfo,sp_oagetProperty,sp_oamethod,sp_oasetProperty,sp_oastop这些存储过程,移走相关的动态连接库文件,在需要的时候复制到原来的位置就可以了。 |