从一个注入点到系统权限的过程。当然,这只是一个例子,在真正的过程中还有很多变化的,我主要通过这个例子来演示一下网络******的过程,接下来我们就采用相应的方法进行防范。
(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:[url]http://www.npch.net[/url]
’--------数据库连接部分--------------
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 "<Script Language=JavaScript>alert(’ncph SQL通用防注入系统提示你↓\n\n请不要在参数中包含非法字符尝试注入!\n\nHttp://www.ncph.net 系统版本:V3.1(ASP)版\n\nBy:rose’);</Script>"
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:POST<br>"
Response.Write "提交参数:"&Fy_Post&"<br>"
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 "<Script Language=JavaScript>alert(’ncph SQL通用防注入系统提示你↓\n\n请不要在参数中包含非法字符尝试注入!\n\nHttp://Www.ncph.net  系统版本:V3.1(ASP)版\n\nBy:rose’);</Script>"
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交参数:"&Fy_Get&"<br>"
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 "<Script Language=JavaScript>alert(’ncph SQL通用防注入系统提示你↓\n\n你的Ip已经被本系统自动锁定!\n\n如想访问本站请和管理员联系!\n\nHttp://www.ncph.net  \n\n系统版本:V3.1(ASP)\n\nBy:rose’);</Script>"
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注入彻底地拒之门外。
综合以上的防范方法,写了一个防范脚本漏洞的小工具,如图:
下载地址: [url]http://www.ncph.net/soft/safe.rar[/url]

转载于:https://blog.51cto.com/xiaoka/101632

Asp网站脚本漏洞的安全防范相关推荐

  1. 跨网站脚本攻击(XSS)的原理与防范对策

    摘要:随着计算机网络技术的迅速发展,网络安全问题已变得越来越受到人们的重视,网络攻击形式多种多样,很多蠕虫病毒.木马病毒等植入到某些网页中,给网络用户带来了很大的安全隐患.其中XSS跨网站脚本攻击,恶 ...

  2. 浅谈跨网站脚本攻击(XSS)的手段与防范(简析新浪微博XSS攻击事件)

    本文主要涉及内容: 什么是XSS XSS攻击手段和目的 XSS的防范 新浪微博攻击事件 什么是XSS 跨网站脚本(Cross-sitescripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一 ...

  3. 网站安全之XSS漏洞攻击以及防范措施

    在网站开发中,安全问题是重中之重的问题,特别像一个sql注入,XSS漏洞攻击,等的防范,如果不做好,网站将存在很大的隐患 XSS漏洞是网站漏洞中最容易出现的一种,至少现在的各大网站中基本都存在,传闻只 ...

  4. 网站安全漏洞--大全

    原文网址:网站安全漏洞--大全_IT利刃出鞘的博客-CSDN博客 简介 本文介绍网站常见的一些安全漏洞,包括:SQL 注入.越权操作.跨站脚本攻击(XSS).跨站请求伪造(CSRF).DDoS 攻击. ...

  5. 【合天网安】CONN.ASP暴库漏洞实验

    0x01预备知识 1.概念: 相对路径和绝对路径 绝对路径:例如D:/test/test.mdb 相对路径:例如/test/test.mdb 2.%5C暴库 简单点说,就是在打开页面的时候把网页中的/ ...

  6. 三.基础部分+asp网站搭建

    渗透测试流程:更全面地找出服务器的问题,更倾向保护 明确目标-->信息收集-->漏洞探测-->漏洞验证-->信息分析-->获取所需-->信息整理-->形成报告 ...

  7. XSS漏洞原理及防范措施

    XSS介绍 XSS(Cross Site Scripting,跨站脚本攻击)是一种常见的网络安全漏洞,允许攻击者在受害者浏览网站时,通过注入恶意脚本(如JavaScript)到网页中,从而窃取用户敏感 ...

  8. 查找网站代码漏洞对网站木马后门查杀的清除

    收到阿里云的短信提醒说是网站存在后门,webshell恶意通信行为,紧急的安全情况,我第一时间登录阿里云查看详情,点开云盾动态感知,查看了网站木马的详细路径以及webshell的特征,网站从来没有出现 ...

  9. WEB安全的防御--介绍XSS跨网站脚本[wiki]

    跨网站脚本 维基百科,自由的百科全书 跳转至: 导航. 搜索 本条目可通过翻译英语维基百科的相应条目来获得改善. 请在翻译前点击右边的"显示▼"了解重要说明.显示▼ 浏览英语条目的 ...

最新文章

  1. 大厂来的水货CTO:低级bug被敲诈50万美元,事后删代码隐藏证据,最后收到死亡威胁...
  2. 125KHz 100cm ID 读卡电路_7 个别出心裁的树莓派优质项目集锦(完整代码+电路设计资料)...
  3. PHP免费的空间www.hostinger.co.uk
  4. TP5.1查询用Db('不含表前缀')/Db::name('不含表前缀')/Db::table('含表前缀')返回数组;model()返回对象
  5. Namenode双机热备之Pacemaker
  6. oracle数据库十六进制转字符串,Oracle中各种进制相互转换
  7. nodejs安装anywhere快速启动一个web服务
  8. 网络传输协议都有什么
  9. 37、购物系统需求分析
  10. msm8937声卡挂载问题
  11. 计算机管理系统权限申请审批表,开通权限申请书范文
  12. 基于zynq的千兆网udp项目_AC6102开发板千兆以太网UDP传输实验2
  13. Mybatis(狂神老师上课笔记)
  14. visual studio 版本的区别
  15. 在VB中如何使IE窗口最大化
  16. HTML及相关知识汇总
  17. C语言atoi、atol、atoll和atoq函数
  18. 实验1:MapReduce课程实验
  19. [Mysql] GROUP BY分组
  20. svn怎么执行清理命令_C盘又见红了?一个C盘清理强迫症教你真正有效的解决方法!...

热门文章

  1. 世界杯,越位,点球,角球等足球相关英语怎么说
  2. 微吼2022企业直播创见大会:探寻直播行业星辰大海
  3. 集成显卡 独立显卡 带 双显示器
  4. Python初识对象
  5. 场景麻将识别开发_基于EMGUCV(一)
  6. 苹果ipad有哪几款_2020年最新iPad选购指南
  7. ZOJ 3810 A Volcanic Island(四色定理模板)
  8. 英文论文写作常用词汇及句型
  9. nodejs 前端生成csv 直接下载记录
  10. OneNote 2016登录时显示“很抱歉,遇到一些临时服务器问题“,重试很多遍也不管用~~~~解决方法