天天看点

软件测试的基本理论-安全测试-4一.安全测试

软件测试的基本理论-安全测试-4

  • 一.安全测试
    • 1.安全测试概述
      • 什么是安全测试
      • 安全测试基本原则
    • 2.常见测安全漏洞
      • 1.SQL注入
      • 2.XSS跨站脚本攻击
      • 3.CSRF 攻击
    • 3.渗透测试
      • 什么是渗透测试
      • 渗透测试流程
    • 4.常见安全测试工具
    • 5.安全测试demo

一.安全测试

1.安全测试概述

什么是安全测试

安全测试贯穿整个软件生命周期:

软件测试的基本理论-安全测试-4一.安全测试

风险分析、静态分析、渗透测试属于安全测试范畴;

安全测试需要转换视角,改变测试中的模拟对象;

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跨站脚本攻击过程

软件测试的基本理论-安全测试-4一.安全测试

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 攻击过程

软件测试的基本理论-安全测试-4一.安全测试

3.渗透测试

什么是渗透测试

a:渗透测试

渗透测试:利用模拟黑客攻击的方式,评估计算机系统安全性能的一种方式;这个过程是站在攻击者的角度对系统的任何弱点、技术缺陷或漏洞进行主动分析,并且有条件的主动利用安全漏洞;

b:渗透测试特点

渐进并且逐步深入的过程;

不影响业务系统的正常运行的攻击方式进行

渗透测试流程

软件测试的基本理论-安全测试-4一.安全测试

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

补充:理论知识

自动化测试