软件系统安全性测试.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系统安全性测试 ?.1.1 Web程序安全测试 Web程序安全测试中的 SQL注入式攻击测试和拒绝服务攻 击的防范。 1.1.1 SQL注入式攻击及测试 .什么是SQL注入式攻击 所谓SQL注入式攻击,就是指攻击者把 SQL命令插入到 Web表单的输入域或页面请求的查询字符串中, 欺骗服务器 执行恶意的 SQL命令。 在某些表单中,用户输入的内容直接用来构造(或者影响) 动态SQL命令,或作为存储过程的输入参数, 这类表单特别 容易受到SQL注入式攻击。常见的 SQL注入式攻击的过程 如下。 (1)某个ASP.NET Web 应用有一个登录页面,这个登录页 面控制着用户是否有权访问应用,它要求用户输入一个名称 和密码 SQL 命 SQL 命 ASP .NET 应用 ASP .NET 应用 构造查询的一个例子。 System.Text.StringBuilder query = new System.Text.StringBuilder( SELECT * from Users WHERE login = ) .Append(txtLogin.Text).Append( AND password=) .Append(txtPassword.Text).Append(); )攻击者在用户名和密码输入框中输入 or 1=1 之类的 内容。 4)将用户输入内容提交给服务器之后,服务器运行上面 的 ASP .NET 代码构造出查询用户的 SQL 命令,但由于攻击 者输入的内容非常特殊,所以最后得到的 SQL 命令变 成 SELECT * from Users WHERE login= or 1=1 AND password= or 1=1 。 5)服务器执行查询或存储过程,将用户输入的身份信息和 服务器中保存的身份信息进行对比。 6 )由于 SQL 命令实际上已被注入式攻击修改, 已经不能真 正验证用户身份,所以系统会错误地授权给攻击者。 如果攻击者知道应用会将表单中输入的内容直接用于验证 身份查询,他就会尝试输入某些特殊的 SQL 字符串篡改查 询,改变其原来的功能,欺骗系统授予其访问权限。 系统环境不同, 攻击者可能造成的损害也不同, 这主要由应 用访问数据库的安全权限决定。 如果用户账户具有管理员或 其他比较高级的权限,攻击者就可能对数据库的表执行各 种他想要做的操作,包括添加、删除或更新数据,甚至可 能直接删除表。 SQL 注入式攻击的总体思路如下。 1 )发现 SQL 的注入位置。 2)判断后台的数据库类型。 )确定 XP_CMDSHELL 可执行的情况。 )发现 Web 虚拟目录。 )上传 ASP 木马。 6)得到管理员权限。 2.SQL 注入式攻击的种类 1)没有正确过滤转义字符 在用户的输入没有被转义字符过滤时,就会发生这种形式的 注入式攻击, 它会被传递给一个 SQL 语句。 这样就会导致应 用程序的终端用户对数据库上的语句实施操纵。比方说,上 面那段代码就会演示这种漏洞。 这种代码的设计目的是将一个特定用户从其用户表中取出, 但是如果用户名被一个恶意的用户用一种特定的方式伪造, 这个语句所执行的操作可能就不仅仅是代码的编写者所期望 的那样了。如果这种代码被用于一个认证过程,那么这个例 子就能够强迫选择一个合法的用户名, 因为 1=1 永远是正确 的。 在一些 SQL 服务器上, 如在 SQL Server 中, 任何一个 SQL 命令都可以通过这种方法被注入, 包括执行多个语句。 例如: statement:=SELECT * FROM users WHERE name= +userName+ ; 通过给userName 赋如下的值,将会导致删除 “ users表;同 时又可以从 “ data表中选择所有的数据(实际上就是透露了 每一个用户的信息) 。 这就将最终 SQL 语句变成下面这个样子。 SELECT * FROM users WHERE name=a;DROP TABLE users; SELECT * FROM data WHERE name LIKE %; 2)非法类型处理 如果一个用户提供的字段并非一个强类型,或者没有实施类 型强制, 就会发生这种形式的攻击。 当在一个 SQL 语句中使 用一个数字字段时,如果程序员没有检查用户输入的合法性 是否为数字型) ,就会发生这种攻击。例如: statement := SELECT * FROM data WHERE id=+a_variable+: 从这个语句可以看出,作者希望a_variable是一个与“id?段 有关的数字。不过,如果终端用户选择一个字符串,就绕过 了对转义字符的需求。 例如, 将 a_variable 设置为: 1;DROP TABL

文档评论(0)

ld1556656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档