Note/软件测试/软件测试-安全测试.md
2023-08-31 12:43:36 +08:00

118 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 1.常规测试与安全测试的比较
### 1.测试目标不同
普通测试以发现Bug为目标安全测试以发现安全隐患为目标。
### 2.假设条件不同
普通测试假设导致问题的数据是用户不小心造成的,接口一般只考虑用户界面;安全测试假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径。
### 3.思考域不同
普通测试以系统所具有的功能为思考域;安全测试的思考域不但包括系统的功能,还有系统的机制外部环境应用与数据自身安全风险与安全属性等。
### 4.问题发现模式不同
普通测试以违反功能定义为判断依据;安全测试以违反权限与能力的约束为判断依据。
## 2.安全测试的基本原则
### 1.培养正确的思维方式
安全测试人员则要有创造性思维,创造性思维能够帮助我们站在攻击者角度思考各种无法预期的情况,同时能够帮助我们猜测开发人员是如何开发的,如何绕过程序防护逻辑,以某种不安全的行为模式导致程序失效。
### 2.尽早测试和经常测试
安全性缺陷和普通Bug没什么区别越早发现修复成本越低要做到这一点最开始的就是在软件开发前期对开发和测试团队进行常见安全问题的培训教他们学会如何检测并修复安全缺陷。
### 3.选择正确的测试工具
很多情况下安全测试需要模拟黑客的行为对软件系统发起攻击,以确保软件系统具备稳固的防御能力。模拟黑客行为就要求安全测试人员擅长使用各种工具,如漏洞扫描工具模拟数据流行为的前后台相关工具数据包抓取工具等。
### 4.尽可能测试源代码
使用源代码扫描工具对软件进行代码扫描,一方面可以找出潜在的风险,从内对软件进行检测,提高代码的安全性;另一方面也可以进一步提高代码的质量。黑盒的渗透测试和白盒的源代码扫描内外结合,可以使软件的安全性得到极大程度的提高。
### 5.测试结果文档化
测试总结的时候,明智且有效的做法是将测试行动和结果清晰准确地记录在文档中,产生一份测试报告,该报告最好包括漏洞类型问题引起的安全威胁及严重程度用于发现问题的测试技术漏洞的修复漏洞风险等。
## 3.常见的安全漏洞及其攻击原理
### 1.SQL注入
所谓SQL注入就是把SQL命令人为的输入URL表格域或者其他动态生成的SQL查询语句的输入参数中最终达到欺骗服务器执行恶意的SQL命令。
### 2.XSS跨站脚本攻击
XSSCross Site Scripting是Web应用系统最常见的安全漏洞之一它主要源于Web应用程序对用户输入检查和过滤不足。攻击者可以利用XSS漏洞把恶意代码注入到网站中当有用户浏览该网站时这些恶意代码就会被执行从而达到攻击的目的。
### 3.CSRF攻击
CSRFCross-Site Request Forgery为跨站请求伪造它是一种针对Web应用程序的攻击方式攻击者利用CSRF漏洞伪装成受信任用户的请求访问受攻击的网站。
## 4.渗透测试特点
● 渗透测试是一个渐进的并且逐步深入的过程。
● 渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。
## 5.渗透测试流程
![image-20230405113706152](https://lsky.hhdxw.top/imghub/img/image-20230405113706152.png)
### 1.明确目标
● 确定测试需求。
● 确定客户要求渗透测试的范围。
● 确定渗透测试规则。
### 2.收集信息
在信息收集阶段要尽量收集关于项目软件的各种信息例如对于一个Web应用程序要收集脚本类型服务器类型数据库类型以及项目所用到的框架开源软件等。信息收集对于渗透测试来说非常重要只有掌握目标程序足够多的信息才能更好地进行漏洞检测。
信息收集的方式可分为两种:
● 主动收集:通过直接访问扫描网站等方式收集想要的信息,这种方式可以收集的信息比较多,但是访问者的操作行为会被目标主机记录。
● 被动收集:利用第三方服务对目标进行了解,如上网搜索相关信息。这种方式获取的信息相对较少且不够直接,但目标主机不会发现测试人员的行为。
### 3.扫描漏洞
在这一阶段,综合分析收集到的信息,借助扫描工具对目标程序进行扫描,查找存在的安全漏洞。
### 4.验证漏洞
在扫描漏洞阶段,测试人员会得到很多关于目标程序的安全漏洞,但这些漏洞有误报,需要测试人员结合实际情况,搭建模拟测试环境对这些安全漏洞进行验证。被确认的安全漏洞才能被利用执行攻击。
### 5.分析信息
经过验证的安全漏洞就可以被利用起来向目标程序发起攻击,但是不同的安全漏洞,攻击机制并不相同,针对不同的安全漏洞需要进一步分析,包括安全漏洞原理可利用的工具目标程序检测机制攻击是否可以绕过防火墙等,制定一个详细精密的攻击计划,这样才能保证测试顺利执行。
### 6.渗透攻击
渗透攻击就是对目标程序发起真正的攻击,达到测试目的,如获取用户帐号密码截取目标程序传输的数据控制目标主机等。一般渗透测试是一次性测试,攻击完成之后要执行清理工作,删除系统日志程序日志等,擦除进入系统的痕迹。
### 7.整理信息
渗透攻击完成之后,整理攻击所获得的信息,为后面编写测试报告提供依据。
### 8.编写测试报告
测试完成之后要编写测试报告,阐述项目安全测试目标信息收集方式漏洞扫描工具以及漏洞情况攻击计划实际攻击结果测试过程中遇到的问题等,此外,还要对目标程序存在的漏洞进行分析,提供安全有效的解决办法。
## 6.常见的安全测试工具
### 1.Web漏洞扫描工具——AppScan
AppScan是IBM公司出的一款Web应用安全测试工具它采用黑盒测试方式可以扫描常见的web应用安全漏洞。
### 2.端口扫描工具——Nmap
Nmap是一个网络连接端口扫描工具用来扫描网上计算机开放的网络连接端口。确定服务运行的端口并且推断计算机运行的操作系统。它是网络管理员用以评估网络系统安全必备工具之一。
### 3.抓包工具——Fiddler
Fiddler是一个http协议调试代理工具它以代理Web服务器形式工作帮助用户记录计算机和Internet之间传递的所有HTTP(HTTPS)流量。
### 4.Web渗透测试工具——Metasploit
Metasploit是一个渗透测试平台能够查找验证漏洞并利用漏洞进行渗透攻击。它是一个开源项目提供基础架构内容和工具来执行渗透测试和广泛的安全审计。