软件系统安全性测试.doc

软件系统安全性测试.doc

ID:57262099

大小:200.00 KB

页数:23页

时间:2020-08-07

软件系统安全性测试.doc_第1页
软件系统安全性测试.doc_第2页
软件系统安全性测试.doc_第3页
软件系统安全性测试.doc_第4页
软件系统安全性测试.doc_第5页
资源描述:

《软件系统安全性测试.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、系统安全性测试1.1  Web程序安全测试Web程序安全测试中的SQL注入式攻击测试和拒绝服务攻击的防范。1.1.1 SQL注入式攻击及测试1.什么是SQL注入式攻击所谓SQL注入式攻击,就是指攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。常见的SQL注入式攻击的过程如下。(1)某个ASP.NETWeb应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输入一个名称和密码。(2

2、)“登录”页面中输入的内容将直接用来构造动态的SQL命令,或者直接用作存储过程的参数。下面是ASP.NET应用构造查询的一个例子。System.Text.StringBuilderquery=newSystem.Text.StringBuilder("SELECT*fromUsersWHERElogin='").Append(txtLogin.Text).Append("'ANDpassword='").Append(txtPassword.Text).Append("'");(3)攻击者在用户名和密码输入框中输入"'or'1'='1"之类的内容。(4)将用户输入内容提交给服务

3、器之后,服务器运行上面的 ASP.NET 代码构造出查询用户的SQL命令,但由于攻击者输入的内容非常特殊,所以最后得到的SQL命令变成 SELECT*fromUsersWHERElogin=''or'1'='1'ANDpassword=''or'1'='1'。(5)服务器执行查询或存储过程,将用户输入的身份信息和服务器中保存的身份信息进行对比。(6)由于SQL命令实际上已被注入式攻击修改,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。如果攻击者知道应用会将表单中输入的内容直接用于验证身份查询,他就会尝试输入某些特殊的 SQL 字符串篡改查询,改变其原来的功能,欺骗系统

4、授予其访问权限。系统环境不同,攻击者可能造成的损害也不同,这主要由应用访问数据库的安全权限决定。如果用户账户具有管理员或其他比较高级的权限,攻击者就可能对数据库的表执行各种他想要做的操作,包括添加、删除或更新数据,甚至可能直接删除表。SQL注入式攻击的总体思路如下。(1)发现SQL的注入位置。(2)判断后台的数据库类型。(3)确定XP_CMDSHELL可执行的情况。(4)发现Web虚拟目录。(5)上传ASP木马。(6)得到管理员权限。2.SQL注入式攻击的种类1)没有正确过滤转义字符在用户的输入没有被转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样

5、就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,上面那段代码就会演示这种漏洞。这种代码的设计目的是将一个特定用户从其用户表中取出,但是如果用户名被一个恶意的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的编写者所期望的那样了。如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为'1'='1'永远是正确的。在一些SQL服务器上,如在SQLServer中,任何一个SQL命令都可以通过这种方法被注入,包括执行多个语句。例如:statement:="SELECT*FROMusersWHEREname='"+userName+"'

6、;"通过给userName赋如下的值,将会导致删除“users”表,同时又可以从“data”表中选择所有的数据(实际上就是透露了每一个用户的信息)。a';DROPTABLEusers;SELECT*FROMdataWHEREnameLIKE'%这就将最终SQL语句变成下面这个样子。SELECT*FROMusersWHEREname='a';DROPTABLEusers;SELECT*FROMdataWHEREnameLIKE'%';2)非法类型处理如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序

7、员没有检查用户输入的合法性(是否为数字型),就会发生这种攻击。例如:statement:="SELECT*FROMdataWHEREid="+a_variable+":"从这个语句可以看出,作者希望a_variable是一个与“id”字段有关的数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需求。例如,将a_variable设置为:1;DROPTABLEusers,它会将“users”表从数据库中删除,SQL语句变成:SELECT*FROMDATAWHEREid=1;DROPTA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。