应用系统安全测试指南
测试过程
在编写源代码和得到目标码的过程,应进行必要的安全性测试。安全测试过程包括测试计划、测试环境准备和执行安全测试输出测试报告。
测试计划
测试人员应首先理解应用系统安全需求,应用系统开发人员应配合测试人员理解应用系统安全需求和安全设计细节。
测试准备
在启动安全测试之前应做好测试前的各项准备,为测试人员提供符合要求的测试环境。
测试执行与结论
测试人员在执行安全测试过程中,发现系统安全功能缺陷和系统安全漏洞,记录相关信息的同时,应及时与应用系统开发人员沟通联系,进行问题确认和修复。
Web安全测试用例参考
▼▼SQL注入测试方法:可以提交数据给数据库的位置
类似asp?id=1的页面:判断方法在参数后提交and 1=1 ,and 1=2,如果and 1=1,返回正常页面,而and1=2,返回出错页面就有可能存在SQL注入,类似的方法也有提交单引号’根据页面的返回信息来判断。如一些SQL会返回出错提示,甚至暴露SQL类型等
一些账号密码提交的页面:在可能的情况下都是通过web提交页面的源代码来分析问题,一般测试情况下都是提交一些经典的SQL指令,如’or’’=’或’ or 1=1 -- 等。
其它一些input提交处:如一些页面的搜索查询处,某些甚至提交连续的单引号都可以暴露出源代码。
如用户发表文章,论坛帖子编辑,提交一些可能执行的代码测试,或是在一些附件里,如flash,嵌入脚本代码测试,简单测试如:<script>alert('1234’)</script> 当没有过滤的页面被用户游览就会执行script代码,弹出一个1234的提示框。
▼▼应用层溢出检查方法:
先在Web应用的输入位置(包括:URL、Cookie、Input、HTTP Header)输入超长的数据(一般为2K-64K),再发送正常数据请求,观测结果。
▼▼帐户锁定检查方法:
使用某合法账号以错误鉴别码反复登陆系统,一般在10次以内。
▼▼弱口令检查方法:
手工提交检查:提交可能的如123456这样的弱口令。 口令检查工具:使用常用的口令如生日,单词等组成字典的方式,进行快速破解,一些工具如:朔雪,扫描器x-way等。
▼▼输入验证检查方法:
输入很大的数(如4,294,967,269),输入很小的数(负数) 。 输入超长字符,如对输入文字长度有限制,则尝试超过限制,刚好到达限制字数时有何反应。
输入特殊字符,如:~!@#$%^&*()_+<>:”{}|。 输入中英文空格,输入字符串中间含空格,输入首尾空格。 输入特殊字符串NULL,null,0x0d 0x0a。 输入正常字符串。 输入与要求不同类型的字符,如: 要求输入数字则检查正值,负值,零值(正零,负零),小数,字母,空值; 要求输入字母则检查输入数字。
输入html和javascript代码。
▼▼上传控制检查方法:
上传文件是否有格式限制,是否可以上传exe文件。 上传文件是否有大小限制,上传太大的文件是否导致异常错误,上传0K的文件是否会导致异常错误,上传并不存在的文件是否会导致异常错误。
通过修改扩展名的方式是否可以绕过格式限制,是否可以通过压包方式绕过格式限制。
是否有上传空间的限制,是否可以超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。
上传文件大小大于本地剩余空间大小,是否会出现异常错误。 关于上传是否成功的判断。上传过程中,中断。程序是否判断上传是否成功。 对于文件名中带有中文字符,特殊字符等的文件上传。
▼▼信息加密传输检查方法:
检查是否使用HTTPS连接,确保鉴别信息(或关键信息)是通过SSL加密传输的。
▼▼敏感信息存储检查方法:
检查源代码可以确定敏感信息是否加密存储。确保客户端与服务端敏感信息(如:口令等)加密存储。
▼▼应用错误消息检查方法:
手工方式有意执行错误操作,如:输入非法字符或内容,不按常规次序操作等。确保返回的错误信息不包含敏感信息。许多详细的错误消息会含有一些敏感信息,如:数据库错误信息、堆栈错误信息等,这些信息都能为攻击者所用。
扩展 · 本文相关链接
