●从一个注入点到系统权限的过程。当然,这只...... 从一个注入点到系统权限的过程。当然,这只是一个例子,在真正的过程中还有很多变化的,我主要通过这个例子来演示一下网络黑客攻击的过程,接下来我们就采用相应的方法进行防范。 (1)首先我们从安装iis6.0的时候做好安装,我初步整理的安装格式如下: IIS6.0的安装 开始菜单—>控制面板—>添加或删除程序—>添加/删除Windows组件 应用程序 ———ASP.NET(可选) |——启用网络 COM 访问(必选) |——Internet 信息服务(IIS)———Internet 信息服务管理器(必选) |——公用文件(必选) |——万维网服务———Active Server pages(必选) |——Internet 数据连接器(可选) |——WebDAV 发布(可选) |——万维网服务(必选) |——在服务器端的包含文件(可选) 然后单击“确定”—>下一步安装。 (2)然后我们要修改一下asp木马调用的三个组件: ①FileSystemObject组件。FileSystemObject可以对文件进行常规操作,可以通过修改注册表,将此组件改名,来防止此类木马的危害。 HKEY_CLASSES_ROOT\Scripting.FileSystemObject改名为其它的名字,如:改为 FileSystemObject_ChangeName,自己以后调用的时候使用这个就可以正常调用此组件了, 也要将clsid值也改一下,HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\项目的值,也可以将其删除,来防止此类木马的危害。注销此组件命令:RegSrv32 /u C:\WINNT\SYSTEM\scrrun.dll ,禁止Guest用户使用scrrun.dll来防止调用此组件。使用命令:cacls C:\WINNT\system32\scrrun.dll /e /d guests ②WScript.Shell组件。WScript.Shell可以调用系统内核运行DOS基本命令,可以通过修改注册表,将此组件改名,来防止此类木马的危害。HKEY_CLASSES_ROOT\WScript.Shell及HKEY_CLASSES_ROOT\WScript.Shell.1改名为其它的名字,如:改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName。自己以后调用的时候使用这个就可以正常调用此组件了,也要将clsid值也改一下HKEY_CLASSES_ROOT\WScript.Shell\CLSID\项目的值 HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\项目的值,也可以将其删除,来防止此类木马的危害。 ③Shell.Application组件。Shell.Application可以调用系统内核运行DOS基本命令,可以通过修改注册表,将此组件改名,来防止此类木马的危害。HKEY_CLASSES_ROOT\Shell.Application及HKEY_CLASSES_ROOT\Shell.Application.1改名为其它的名字,如:改为Shell.Application_ChangeName或Shell.Application.1_ChangeName自己以后调用的时候使用这个就可以正常调用此组件了。也要将clsid值也改一下HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值。HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值,也可以将其删除,来防止此类木马的危害,禁止Guest用户使用shell32.dll来防止调用此组件。使用命令:cacls C:\WINNT\system32\shell32.dll /e /d guests(注:操作均需要重新启动WEB服务后才会生效)。 (3)然后对于ftp的使用,我还是觉得使用微软件的ftp比较可靠,给每一个用户创建一个user权限的用户,指向相应的ftp目录即可。当然,我们还要禁用Guests组用户调用cmd.exe。命令为:cacls C:\WINNT\system32\Cmd.exe /e /d guests,接下来我们要对各磁盘的权限做一下限制。 (4)对系统权限的设置 系统盘及所有磁盘只给 Administrators 组和 SYSTEM 的完全控制权限。 系统盘\Documents and Settings 目录只给 Administrators 组和 SYSTEM 的完全控制权限。 系统盘\Documents and Settings\All Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限。 系统盘\Inetpub 目录及下面所有目录、文件只给 Administrators 组和 SYSTEM 的完全控制权限。 系统盘\Windows\System32\cacls.exe、cmd.exe、net.exe、net1.exe 文件只给 Administrators 组和 SYSTEM 的完全控制权限。 (5)本地安全策略 本地安全策略设置 开始菜单—>管理工具—>本地安全策略 A、本地策略——>审核策略 审核策略更改 成功 失败 审核登录事件 成功 失败 审核对象访问 失败 审核过程跟踪 无审核 审核目录服务访问 失败 审核特权使用 失败 审核系统事件 成功 失败 审核账户登录事件 成功 失败 审核账户管理 成功 失败 B、本地策略——>用户权限分配 关闭系统:只有Administrators组、其它全部删除。 通过终端服务拒绝登陆:加入Guests、User组。 通过终端服务允许登陆:只加入Administrators组,其他全部删除。 C、本地策略——>安全选项 交互式登陆:不显示上次的用户名 启用 网络访问:不允许SAM帐户和共享的匿名枚举 启用 网络访问:不允许为网络身份验证储存凭证 启用 网络访问:可匿名访问的共享 全部删除 网络访问:可匿名访问的命 全部删除 网络访问:可远程访问的注册表路径 全部删除 网络访问:可远程访问的注册表路径和子路径 全部删除 帐户:重命名来宾帐户 重命名一个帐户 帐户:重命名系统管理员帐户 重命名一个帐户 通过上面的设置,我们已经打造了一个安全标准的网络服务器,还有一些小的细节也要注意,比如开启windows防火墙、端口过滤、和开启自动更新。对于网站服务器,安装一个杀毒软件是必备的,我个人认为mcafee8.0不错,有自动更新功能,当然是国外的一款杀毒软件,对于绝大部分的黑客工具和asp等木马都要进行查杀,在别人传一些有危害性的工具到服务器时它都会自动删掉,并能清除系统中的病毒和木马程序。并且它自带有一个缓冲区溢出保护和访问保护充当了防火墙的功能。当我们按照上面设置的设置后,再接着上面的实例,上传一个asp木马上去,马上被mcafee杀掉,经过加密后再上传,但由于服务器的设置,这次我们再在执行命令处查看,因缺少组件出现错误,如图: 这样我们便彻底地防住了asp木马,但我们漏洞的源点还没有得到解决,那就是如何防止sql注入。对于sql的注入,我们主要是过虑一些字符,当然直接修改源代码也可以,但是修改起来比较麻烦,我们通常的做法是在数据库连接文件件里,如conn.asp里面加一个文件头,也就是我们的防注入程序文件头。当然也有一些常用的就是在有漏洞的文件中加入一些过虑代码。 我们来看下面部分的代码: <% ’--------版权说明------------------ ’ncph SQL通用防注入程序 V3.0 ’2.0强化版,对代码做了一点优化,加入自动封注入者Ip的功能!^_^ ’3.0版,加入后台登陆查看注入记录功能,方便网站管理员查看非法记录,以及删除以前的记录,是否对入侵者Ip解除封锁! ’npch小组 by rose URL:http://www.npch.net ’--------数据库连接部分-------------- dim dbkillSql,killSqlconn,connkillSql dbkillSql="SqlIn.mdb" ’On Error Resume Next Set killSqlconn = Server.CreateObject("ADODB.Connection") connkillSql="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbkillSql) killSqlconn.Open connkillSql If Err Then err.Clear Set killSqlconn = Nothing Response.Write "数据库连接出错,请检查连接字串。" Response.End End If ’--------定义部份------------------ Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr,Kill_IP,WriteSql ’自定义需要过滤的字串,用 "|" 分隔 Fy_In = "’|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare" Kill_IP=True WriteSql=True ’---------------------------------- Fy_Inf = split(Fy_In,"|") ’--------POST部份------------------ If Request.Form<>"" Then For Each Fy_Post In Request.Form For Fy_Xh=0 To Ubound(Fy_Inf) If Instr(LCase(Request.Form(Fy_Post)),Fy_Inf(Fy_Xh))<>0 Then If WriteSql=True Then killSqlconn.Execute("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values(’"&Request.ServerVariables("REMOTE_ADDR")&"’,’"&Request.ServerVariables("URL")&"’,’POST’,’"&Fy_Post&"’,’"&replace(Request.Form(Fy_Post),"’","’’")&"’)") killSqlconn.close Set killSqlconn = Nothing End If Response.Write "" Response.Write "非法操作!系统做了如下记录↓ " Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&" " Response.Write "操作时间:"&Now&" " Response.Write "操作页面:"&Request.ServerVariables("URL")&" " Response.Write "提交方式:POST " Response.Write "提交参数:"&Fy_Post&" " Response.Write "提交数据:"&Request.Form(Fy_Post) Response.End End If Next Next End If ’---------------------------------- ’--------GET部份------------------- If Request.QueryString<>"" Then For Each Fy_Get In Request.QueryString For Fy_Xh=0 To Ubound(Fy_Inf) If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then If WriteSql=True Then killSqlconn.Execute("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values(’"&Request.ServerVariables("REMOTE_ADDR")&"’,’"&Request.ServerVariables("URL")&"’,’GET’,’"&Fy_Get&"’,’"&replace(Request.QueryString(Fy_Get),"’","’’")&"’)") killSqlconn.close Set killSqlconn = Nothing End If Response.Write "" Response.Write "非法操作!系统做了如下记录↓ " Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&" " Response.Write "操作时间:"&Now&" " Response.Write "操作页面:"&Request.ServerVariables("URL")&" " Response.Write "提交方式:GET " Response.Write "提交参数:"&Fy_Get&" " Response.Write "提交数据:"&Request.QueryString(Fy_Get) Response.End End If Next Next End If If Kill_IP=True Then Dim Sqlin_IP,rsKill_IP,Kill_IPsql Sqlin_IP=Request.ServerVariables("REMOTE_ADDR") Kill_IPsql="select Sqlin_IP from SqlIn where Sqlin_IP=’"&Sqlin_IP&"’ and kill_ip=true" Set rsKill_IP=killSqlconn.execute(Kill_IPsql) If Not(rsKill_IP.eof or rsKill_IP.bof) Then Response.write "" Response.End End If rsKill_IP.close End If %> 上面的防注入程序对非法入侵者的各种注入尝试的post提交和get提交都做了限制,过虑的字符有:’|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare,当注入尝试达到3的时候会自动锁定你的ip,我们来看一下我们上面程序加了防注入后的效果如下: 上面是软件检测的结果,那么我们再看看手工检测的结果,我在网址后面加了个向左的单引号,结果返回如图: 单击确定后,显示: 非法操作!系统做了如下记录↓ 操作IP:127.0.0.1 操作时间:2006-4-16 23:00:59 操作页面:/syjh/search.asp 提交方式:GET 提交参数:sortid 提交数据:3’ 并在数据库里写入攻击者的ip、时间、提交的参数等相关的记录。这样我们就将sql注入彻底地拒之门外。 综合以上的防范方法,写了一个防范脚本漏洞的小工具,如图: 下载地址: http://www.ncph.net/soft/safe.rar |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-29 13:22 , Processed in 0.228026 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.