前言
随着人们对于软件产品的要求越来越严格,信息一体化的背后更加深藏着各类安全隐患,因此安全测试成为软件测试中非常重要的环节。
安全测试基础
01.
XSS攻击
(1)简介
XSS(Cross Site Scripting)跨站脚本攻击,属于Web攻击的一种,攻击者通过对网页注入可执行代码(html或JS)成功被浏览器执行,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
(2)XSS攻击方式
反射型XSS:用户访问一个被攻击者篡改后的链接时,被植入的脚本会被用户浏览器执行,也称非持久型因为是一次性,仅对当次的页面访问产生影响;
反射型XSS场景:带有XSS脚本的链接转成的短链;【在url后跟xss脚本】,网址跳转;
存储型XSS:包含XSS攻击脚本的内容会被存储到服务器端,也称持久型,用户读取到内容时会自动执行脚本;
存储型XSS场景:其他用户查看别人发布的留言、评论,管理员发布的公告,黑客发布的博客文章;反馈功能,投诉功能,聊天记录功能。
(3)XSS攻击原理
用户传入的数据被当做是程序,所以会执行程序。
01.
SQL注入
(1)简介
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对现有应用程序,将SQL语句注入到后台数据库,实现无账号登录,甚至篡改数据库。
(2)SQL注入原理
找到SQL注入的位置,判断出服务器类型和后台数据库类型,针对不同的服务器和数据库特点进行SQL注入攻击。
03.
CSRF跨站请求伪造
(1)简介
CSRF(Cross Site Request Forgy)是指攻击者盗用受信任用户的身份,并向第三方网站发送恶意请求,最后达到攻击者所需要的操作行为,对于服务器来说这个请求是合法的。
(2)CSRF原理
站点B向站点A发送请求,请求带站点A的cookies。
安全测试类型
安全测试分类
1 | 身份验证机制:只对首次传递的Cookie加以验证,程序没有持续对Cookie中内含信息验证比对,攻击者可以修改Cookie中的重要信息以提升权限进行网站数据存取或是冒用他人账号取得个人私密资料(测试对象:可以进行传参的URL,提交请求页面,登录后的Cookie)。 |
2 | 会话管理劫持:检测Web应用程序会话机制是否存在安全隐患,能否被非法利用(会话劫持,伪装成合法用户)而影响Web应用程序的安全 |
3 | SQL注入:攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。 |
4 | XSS跨站脚本攻击:恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。 |
5 | CSRF跨站请求伪造:攻击者通过调用第三方网站的恶意脚本来伪造请求,在用户不知情的情况下,攻击者强行递交构造的具有“操作行为”的数据包。(测试对象:网页中可进行输入的表单)。 |
6 | 安全配置错误:Config中的链接字符串以及用户信息,邮件,数据存储信息等都需要加以保护,如果没有进行保护,那么就是安全配置出现了问题。 |
7 | 加密存储:未对需要保护的数据进行加密或者加密算法太弱都是不安全的加密存储。 |
8 | URL访问:攻击者能够很容易地就伪造请求直接访问未被授权的页面(测试对象:需要身份验证的页面)。 |
9 | 敏感信息泄露:攻击者可能会窃取或篡改这些弱保护的数据。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。 |
10 | 缓冲区溢出:当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。 |
11 | LDAP注入:许多应用的安全性依赖于基于LDAP目录的单点登录环境。攻击者可能直接访问LDAP目录树下的数据库,及重要信息。 |
12 | 篡改输入:利用一些命令或者工具等篡改一些字段的值。 |
安全测试方法
01.
检查数据存储是否安全
- 检查敏感数据是否加密存储,检查对应数据库中的数据记录
- 检查敏感数据是界面上是否脱敏显示,即手机号139****2107
- 检查界面上输入框数据是否有超额或负数限制
02.
密码健壮性验证
- 验证多次输入错误密码的情
- 校验密码的复杂度
- 验证密码找回方式
03.
文件上传验证
- 使用抓包工具获取上传接口,修改文件的后缀名,再次上传
- 在文件中编辑HTML或js语句上传
04.
越权操作
- 当前登录用户不能修改其他用户信息
- 当前登录用户只能使用分配给当前用户的权限
05.
用户认证安全性
- 重复用户名提示校验
- 用户权限变更影响
- 用户登录密码是否可见,是否可复制
06.
输入框验证
- 输入<input type=”text” name=”user” οnclick=”alert(1)”/>,看是否出现文本框
- 输入 ”><script><” 看是否出现代码溢出
安全测试贯穿软件产品的生命周期,可以进一步提升产品的质量,同时也可以对系统进行保护,不被非法入侵,不受各种因素的干扰。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。