昨天学习了安全测试相关的基础知识,下面做一个总结:使用4W1H的原则,4W包含WHAT、WHEN、WHERE、WHO, 1H则是指HOW。
What
安全测试是什么? 我们都知道安全测试很重要,但是到底什么是安全测试呢,安全测试是指软件使用过程中的安全性,包括数据安全,网络安全,权限安全等,总的来说就是无论是用户不经意的操作,还是黑客有意的进行攻击,用户的操作、数据都是安全可靠的,不会造成数据的丢失,财产的损失以及不必要的法律纠纷等。所以从这个角度来讲其实安全测试对于整个软件的使用是非常重要的,但是在我们实际的测试工作中,由于时间限制或者是安全意识不够,大家往往不会进行单独的安全测试,或者是等到有第三方机构检测出来问题之后才会进行相关的测试。
When
什么时候进行安全测试? 安全测试的重要性不言而喻,那什么时候需要开展安全测试,通常情况下我们分为两种场景,
- 功能安全测试,这个通常是按照公司内部已有的安全规范和标准来进行测试,或者有专门的安全测试需求
- 系统测试完成后的渗透测试,这种情况下通常是测试人员需要把自己当成黑客的角色来进行,对系统进行攻击,验证系统是否能够抵挡住攻击
Where&Who
在哪里进行安全测试? 谁来进行安全测试? 通常这个没有特殊要求,都是和功能测试同时进行,由安全测试人员进行,有一些特殊要求的情况会邀请第三方安全公司进行测试。
How
如何开展安全测试? 前面说了很多,那要怎么开展安全测试呢?其实安全测试也和普通的功能测试一样的步骤,需要进行安全测试的用例设计,用例执行,给开发提交bug进行修复,验证是否修改,最后进行测试报告的编写。 通常需要包含静态的代码扫描,动态的渗透测试两个方面。代码扫描发现一些组件方面的安全问题等,渗透测试需要借助一些工具来进行。
用例设计的范围
- sql注入: SQL注入通常发生在应用程序未正确验证和过滤用户输入的情况下 假设有一个简单的登录页面,用户需要输入用户名和密码才能登录。后台的SQL查询功能如下所示:
SELECT * FROM users WHERE username='<input_username>'AND password= '<input_password>'
应用程序可能直接将用户输入的内容插入到SQL查询语句中,而未对其进行验证和过滤。如果攻击者在用户名字段中输入' OR '1'='1,SQL查询将变成以下形式
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '<input_password>'
由于'1'='1'永远为真,这个查询将返回所有用户的记录,从而绕过了身份验证。
- xss注入 可以使用js脚本插入一个弹框验证是否过滤了脚本注入,比如在文本输入框中输入我是一个弹框,查看运行后是否有弹框,有的话则说明没有过滤,需要进行处理。
- 越权
- 垂直越权:无管理员权限的用户A使用管理员操作的url进行访问,查看是否可以进行一些编辑修改删除的操作
- 水平越权:用户A使用用户B的cookies进行访问,查看接口是否可以返回用户B的数据 - 敏感数据 对于敏感数据需要进行一些过滤的操作,需要验证,比如一些涉政涉恐的词不能出现在一些很官方正式的网站。
以上这些是使用比较多的一些,当然还有比如DOS攻击,网络端口攻击等等,下方提供一个Seclists,是一个安全字典,安全测试人员可以根据需要进行使用,是一个参考的宝典,包含DNS,数据库,常用默认密码等等
获取seclists的方法如下:
Install
Zip
wget -c github.com/danielmiess… -O SecList.zip
&& unzip SecList.zip
&& rm -f SecList.zip
Git (Small)
git clone --depth 1
github.com/danielmiess…
Git (Complete)
git clone github.com/danielmiess…
Kali Linux (Tool Page)
apt -y install seclists
BlackArch (Tool Page)
sudo pacman -S seclists
以上就是昨天学习了一些关于安全测试的基础知识,有问题欢迎指出,多谢。