网站漏洞检测归类和解决方案

上传人:汽*** 文档编号:560772509 上传时间:2024-03-07 格式:DOCX 页数:8 大小:26.18KB
返回 下载 相关 举报
网站漏洞检测归类和解决方案_第1页
第1页 / 共8页
网站漏洞检测归类和解决方案_第2页
第2页 / 共8页
网站漏洞检测归类和解决方案_第3页
第3页 / 共8页
网站漏洞检测归类和解决方案_第4页
第4页 / 共8页
网站漏洞检测归类和解决方案_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《网站漏洞检测归类和解决方案》由会员分享,可在线阅读,更多相关《网站漏洞检测归类和解决方案(8页珍藏版)》请在金锄头文库上搜索。

1、doc文档可能在WAP端扫瞄体验不佳。建议您优先选择TXT,或下载源文件到本机查看。一、典型网站漏洞分类 依照风险等级,网站漏洞通常可分为高风险、中风险和低风险三种。其中高风险漏洞是 必须封堵的。中、低风险漏洞中有一部分是必须封堵的。还有一部分中、低风险漏洞,由于 其封堵的代价可能远高于不封堵所造成的缺失,因而能够进行选择性封堵。能够采取工具亿 思平台进行其网站的漏洞扫描,具体地址为: :/ iiscan 典型网站漏洞的分类 及相应的封堵要求如下表所示:风险等级高风险 1、 SQL 注入漏洞 2、跨站漏洞中、低风险 1、 默认测试用例文件 2、治理后台登陆入口中、低风险 1、 存在电子邮件地址

2、漏洞名称3、XPATH注入漏3、应用程序错误引起的2、无效链接洞 信息泄露4、备份文件 造成的源代 码泄漏3、Web应用默认目录封堵要求必须封堵选择封堵1二、典型网站漏洞阻碍及解决方案1、SQL注入漏洞漏洞阻碍:本漏洞属于Web应用安全中的常见漏洞,属于OWASP TOP 10 (2007)中的注入类漏洞。专门多WEB应用中都存在SQL注入漏洞SQL注入是一种 攻击者利用代码 缺陷进行攻击的方式,可在任何能够阻碍数据库查询的应用程序参数中利 用。例如url本身的参数、post数据或cookie值。正常的SQL注入攻击专门大程度上 取决于攻击者使用从错误消息所获得信息。然而,即使没有显示错误消息

3、应用程序仍可能受 SQL注入的阻碍。总体上讲,SQL注入是对web应用而不是对web服务器或操作系统本身 的攻击。正如其名称所示,SQL注入是对查询添加非预期SQL命令从而以数据库治理员或 开发人员非预期的方式操控数据库的行为。假如成功的话,就能够获得、修改、注入或删除 有漏洞web应用所使用数据库服务器的数据。在某些环境下,可利用SQL注入完全操纵系 统。解决方案: 防护建议包括部署分层安全措施(包括在同意用户输入时使用参数化的查 询)、确保应用程序仅使用预期的数据、加固数据库服务器防止不恰当的访问数据。建议 使用以下措施防范SQL注入漏洞:2关于开发=使用以下建议编写不受SQL注入攻击阻碍

4、的web应用。参数化查 询:SQL注入源于攻击者操纵查询数据以修改查询逻辑,因此防范SQL注入攻击的最佳方 式确实是将查询的逻辑与其数据分隔,这能够防止执行从用户输入所注入的命令。这种方 式的缺陷是可能对性能产生阻碍(但阻碍专门小),且必须以这种方式构建站点上的每个 查询才能完全有效。只要无意中绕过了一个查询,就足以导致应用受SQL注入的阻碍。以 下代码显示的是能够进行SQL注入的SQL语句示例。sSql = SELECT LocationName FROM Locations ; sSql = sSql + WHERE LocationID= + RequestLocationID; oCm

5、d mandText = sSql;下面的例子使用了参数化的查询,不受SQL注入攻击的阻碍。sSql=SELECT*FROMLocations;sSql=sSql+WHERELocationID=LocationID; oCmdmandText = sSql; oCmd.Parameters.Add(LocationID,RequestLocationID);应 用 程 序 没 有 包 含 用 户 输 入 向 服 务 器 发 送 SQL 语 句 , 而 是 使 用-LocationlD-参数替代该输入,如此用户输入就无法成为SQL执行的命令。3 这种方式能够有效的拒绝攻击者所注入的任何输入,尽

6、管仍会生成错误,但仅为数据类 型转换错误,而不是黑客能够利用的错误。以下代码示例显示从查询字符串中获得产品ID并使用到SQL查询中。请注意传送给 SqlCommand 的包含有 SELECT 的字符串仅仅是个静态字符 串,不是从输入中截取 的。此外还请注意使用SqlParameter对象传送输入参数的方式,该对象的名称(pid)匹 配SQL查询中所使用的名称。C#示例:stringconnStringWebConfigurationManager.ConnectionStringsmyConn.ConnectionStr ing; using (SqlConnection conn = new

7、 SqlConnection(connString) conn.Open(); SqlCommand cmd = new SqlCommand(SELECT Count(*) FROM Products WHERE ProdID=pid, conn); SqlParameter prm = new SqlParameter(pid, SqlDbType.VarChar, 50); prm.Value = Request.QueryStringpid; cmd.Parameters.Add(prm); int recCount = (int)cmd.ExecuteScalar(); 4VB.NE

8、T 示例:DimconnStringAsStringWebConfigurationManager.ConnectionStrings(myConn).ConnectionStr ingUsing conn As New SqlConnection(connString) conn.Open() Dim cmd As SqlCommand = New SqlCommand(SELECT Count(*) FROM Products WHERE ProdID=pid, conn) Dim prm As SqlParameter = New SqlParameter(pid,SqlDbType.V

9、arChar, 50) prm.Value = Request.QueryString(pid) cmd.Parameters.Add(prm) Dim recCount As Integer = cmd.ExecuteScalar() End Using 验证输入:可通过正确验证用户输入的类型和格式防范大多数SQL注入攻击,最佳方 式是通过白名单,定义方法为关于相关的字段只同意特定的帐号号码或帐号类型,或关于 其他仅同意英文字母表的整数或字母。专门多开发人员都试图使用黑名单字符或转义的方式 验证输入。总体上讲,这种方式通过在恶意数据前添加转义字符来拒绝已知的恶意数据,如 单引号,如此之后的项

10、就能够用作文字值。5这种方式没有白名单有效,因为不可能事先明白所有形式的恶意数据。关于安全操作 =使用以下建议关心防范对web应用的SQL注入攻击。限制应用程序权限:限制用户凭据,仅使用应用运行所必需权限的。任何成功的SQL注 入攻击都会运行在用户凭据的环境中,尽管限制权限无法完全防范SQL注入攻击,但能够大 大增加其难度。强系统治理员口令策略:通常攻击者需要治理员帐号的功能才能使用特定的SQL命令, 假如系统治理员口令较弱的话就比较容易暴力推测,增加成功SQL注入攻击的可能性。另 一个选项确实是全然不使用系统治理员口令,而是为特定目的创建特定的帐号。一致的错误消息方案:确保在显现数据库错误时

11、向用户提供尽可能少的信息。不要泄漏 整个错误消息,要同时在web和应用服务器上处理错误消息。当web月服务器遇到处理错误 时,应使用通用的web页面响应,或将用户重新定向到标准的位置。绝不要泄漏调试信息 或其他可能对攻击者有用的细节。有关如何在 IIS 中关闭详细错误消息的说明请见:6:/microsoft/windows2000/en/server/iis/default.asp?url=/windows2000/en/server/iis/htm/core/iierrcst.htm使用以下句法在Apache服务器上取缔错误消息:Syntax:ErrorDocument Example: E

12、rrorDocument 500/webserver_errors/server_error500.txtWebSphere之类的应用服务器通常默认安装启用了错误消息或调试设置。有关如何取缔 这些错误消息的信息,请参考应用服务器文档。储备过程:假如不使用的话,请删除 master.Xp_cmdshell、xp_startmail、 xp_sendmail、sp_makewebtask 之类的 SQL 储备过程。SQL注入漏洞全然上依旧取决于web应用程序的代码。尽管不是修复,但能够通过向 IDS中添加结合了正则表达式的规则作为紧急措施检测SQL注入攻击。尽管这无法修复所 有可能的SQL注入漏洞

13、,但便于实施,同时要求攻击者必须要改进其方法才能实现成功的 攻击。可如下使用正则表达式。删除 SQL 元字符的正则表达式:/(%27)|()|(-)|(%23)|(#)/ix7可如下将上述正则表达式添加到 Snort 规则: alert tcp $EXTERNAL_NET any - $ _SERVERS $ _PORTS (msg:SQL Injection-Paranoid;flow:to_server,established;uricontent:.pl;pcre:/(%27)|()|(- -)|(%23)|(#)/i; classtype:Web-application-attack;

14、 sid:9099; rev:5;)传 统SQL 注 入 攻 击 的 正 则 表 达 式 :/w*(%27)|()(%6F)|o|(%4F)(%72)|r|(%52)/ix删除有 UNION 关键字的 SQL 注入攻击的正则表达式: /(%27)|()union/ix (%27)|()可为其他的SQL查询(如select、insert、update、delete、drop等)编写类似的 正则表达式。在MS SQL服务器上检测SQL注入攻击的正则表达式:/exec(s|+) + (s|x)pw+/ix关于质量保证 =8解决SQL注入缺陷最终要求基于代码的修复,“关于开发”和“关于安全操作”部分

15、所述的步骤提供了修复这些漏洞所必要的信息。以下步骤概述了如何对 应用程序手动测试 SQL 注入。如何对应用程序手动测试SQL注入:1. 在扫瞄器中打开期望测试SQL注入漏洞的web应用。2. 将鼠标光标悬停在 Web 站点的链接上并注意底部的状态栏,能够看到链接所指向 的URL。找到其中带有参数的URL,如:/ site /articleid.asp?id=42注释:假如没有在状态栏中看到任何URL,请点击链接然后查看地址栏,直到找到带有 参数的 URL。3. 找到带有参数的URL后,点击链接进入网页,在地址栏中能够看到状态栏中的URL。4. 有两种测试SQL注入脚本的方法,请使用全部两种方式依次测试每个参数值。方法1.在地址栏中点击光标,高亮显示参数值,如高亮显示name二value中的value 并9用单引号()替换,这时应类似于 name=。方法 2. 在地址栏中点击光标,在 value 中间输入单引号( ) ,这时应类似于 name=value。5点击GO键将要求发送到Web服务器。6. 分析Web服务器响应中的错误消息,大多数数据库错误

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号