软件测试的基本理论-安全测试-4
- 一.安全测试
-
- 1.安全测试概述
-
- 什么是安全测试
- 安全测试基本原则
- 2.常见测安全漏洞
-
- 1.SQL注入
- 2.XSS跨站脚本攻击
- 3.CSRF 攻击
- 3.渗透测试
-
- 什么是渗透测试
- 渗透测试流程
- 4.常见安全测试工具
- 5.安全测试demo
一.安全测试
1.安全测试概述
什么是安全测试
安全测试贯穿整个软件生命周期:
风险分析、静态分析、渗透测试属于安全测试范畴;
安全测试需要转换视角,改变测试中的模拟对象;
1) 测试目标不同
普通测试:以发现bug为目的
安全测试:以发现安全隐患为目的
2)假设条件不同
普通测试:假设导致问题数据是用户不小心造成;接口一般只考虑用户界面,
安全测试:假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径;
3)思考域不同
普通测试:系统的功能作为思考域
安全测试:不但包括系统功能,还有系统机制,外部环境,应用和数据自身安全风险和安全属性等
4)问题发现模式不同
普通测试:违反功能定义为判断依据
安全测试:违反权限与能力的约束为判断依据
安全测试基本原则
遵守一些安全基本原则能避免一些常见的问题出现;
1) 培养正确的思维方式
跳出常规的思维定式才能成功执行安全测试;常规测试只需要软件正常运行,而安全测试测试人员需要有创造性思维、逆向思维;
2)尽早测试和常规测试
安全缺陷与常规bug没什么区别,也遵循尽早测试原则;
3)选择正确的测试工具
很多情况下需要模拟黑客对软件进行攻击,以确保软件具有稳固的防御能力;模拟黑客就需要测试人员需要了解一些安全工具,如漏洞扫描工具,模拟数据流行为的前后台相关工具,数据抓包工具等,但这只是一个安全漏洞方式,不能作为测试工具使用;
4)可能情况下使用源代码
测试分为黑盒与白盒;黑盒测试一般使用渗透测试,本身不足是需要大量的测试用例支撑,测试完后仍无法确定软件是否存在风险;白盒源代码扫描成为流行的技术,可以找出潜在风险,提高代码安全性;
5)测试结果文档化
测试总结-测试行动与测试结果、测试记录清晰记录在文档中;产生测试报告最好包括测试漏洞类型、问题引起安全威胁、严重程度、用于发现缺陷测试技术、漏洞修复、风险等;能够有效帮助开发进行问题定位;
2.常见测安全漏洞
SQL注入、XSS跨站脚本攻击、CSRF 攻击
1.SQL注入
a:什么是SQL注入
SQL注入:把SQL命令人为的输入URL、表格或者其他动态生成SQL查询的语句的输入参数中,最终达到欺骗服务器执行恶意的SQL命令;
例如:
网站通过网页输入用户的数据
https://blog.csdn.net/xuaner8786/article/details/id=2323
此时,用户的id 2323被插入数据库执行下列操作;
select*from users where id =2323
但如果不对输入信息进行过滤,会出现如下情况:
https://blog.csdn.net/xuaner8786/article/details/id=’ ’ or 1=1
select*from users where id = ’ ’ or 1=1
此时查到的是所有的用户信息;
b:安全性注意总结:
对用户输入的内容要时刻保持警惕。
只有客户端的验证等于没有验证。
永远不要把服务器错误信息暴露给用户
c:SQL类别
SQL注入不仅能通过输入框,还能通过Url达到目的。
除了服务器错误页面,还有其他办法获取到数据库信息。
可通过软件模拟注入行为,这种方式盗取信息的速度要比你想象中快的多。
漏洞跟语言平台无关,并非asp才有注入漏洞而asp.net就没有注入漏洞,一切要看设计者是否用心。
2.XSS跨站脚本攻击
a:什么是跨站脚本攻击(也称为XSS)
指利用网站漏洞从用户那里恶意盗取信息;人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。因此有人将跨站脚本攻击缩写为XSS
b:XSS跨站脚本攻击影响
为了搜集用户信息,攻击者通常会在有漏洞的程序中插入 JavaScript、VBScript、 ActiveX或Flash以欺骗用户(详见下文)。一旦得手,他们可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告等
c:XSS跨站脚本攻击过程
d:XSS防御规则
不要在允许位置插入不可信数据
在向HTML元素内容插入不可信数据前对HTML解码
在向HTML常见属性插入不可信数据前进行属性解码
在向HTML JavaScript Data Values插入不可信数据前,进行JavaScript解码
在向HTML 样式属性值插入不可信数据前,进行CSS解码
在向HTML URL属性插入不可信数据前,进行URL解码
3.CSRF 攻击
a:什么是CSRF 攻击
CSRF(Cross-site request forgery)也被称为 one-click attack或者 session riding,中文全称是叫跨站请求伪造
攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令
b:CSRF 攻击影响
用于盗取账号、转账、发送虚假消息等;攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。
c:CSRF 攻击防御规则
验证 HTTP Referer 字段
使用验证码,关键操作页面加上验证码
在请求地址中添加token并验证
在HTTP 头中自定义属性并验证
d:CSRF 攻击过程
3.渗透测试
什么是渗透测试
a:渗透测试
渗透测试:利用模拟黑客攻击的方式,评估计算机系统安全性能的一种方式;这个过程是站在攻击者的角度对系统的任何弱点、技术缺陷或漏洞进行主动分析,并且有条件的主动利用安全漏洞;
b:渗透测试特点
渐进并且逐步深入的过程;
不影响业务系统的正常运行的攻击方式进行
渗透测试流程
a:明确目标
渗透测试-确定测试需求,如针对业务逻辑还是管理权限漏洞;然后确定渗透测试测测试范围,进而确定测试规则,测试程度,
b:收集信息
尽可能收集软件信息,只有掌握足够多的信息,才能进行更好的漏洞检查;
c:扫描漏洞
综合分析收集到的信息,借助扫描工具对目标程序进行扫描,查找存在的安全漏洞;
d:验证漏洞
扫描漏洞阶段,测试人员会得到很多关于测试目标的安全漏洞,但漏洞有遗漏,需要测试人员结合实际情况,搭建模拟测试环境对这些安全漏洞进行扫描,被确认的安全漏洞才能被执行利用;
e:分析信息
不同安全漏洞攻击机制不一样,针对各种安全漏洞进一步分析,
f:渗透攻击
渗透攻击就是对目标程序进行攻击,达到测试目的,如获取账户信息,权限等,一般渗透攻击为一次性测试,测试完成测试环境要恢复;
g:整理信息
渗透攻击完成后,整理攻击所获得信息,为后面编写测试报告提供数据支持;
h:编写测试报告
阐述项目安全测试目标、信息采集方式、漏洞扫描工具以及漏洞情况、攻击计划、实际攻击结果、遇到问题。还要对存在漏洞进行分析,提供安全有效的解决办法;
4.常见安全测试工具
1,web漏洞扫i奥工具–AppScan
IBM AppScan该产品是一个领先的 Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界。Rational AppScan 可自动化 Web 应用的安全漏洞评估工作,能扫描和检测所有常见的 Web 应用安全漏洞,例如 SQL 注入(SQL-injection)、跨站点脚本攻击(cross-site scripting)、缓冲区溢出(buffer overflow)及最新的 Flash/Flex 应用及 Web 2.0 应用曝露等方面安全漏洞的扫描
2,端口扫描工具-nmap
NMAP(Network Mapper)是一款开放源代码的网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题.Nmap以新颖的方式使用原始IP报文来发现网络上有一些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息),它们使用什么类型的报文过滤器/防火墙,以及一堆其他功能。虽然Nmap通常用于安全审核,许多系统管理员和网络管理员也用它来做一些日常的工作,选择查看整个网络的信息,管理服务升级计划,以及监视主机和服务的运行。
3,抓包工具-Fiddler
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式
4,Web渗透测试工具-metasloit
Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。
5.安全测试demo
补充:理论知识
自动化测试