安全测试是建立在功能测试基础上进行的测试,安全测试提供证据表明,在面对恶意攻击时,应用仍能充分满足它的需求,主要是对产品进行检验以验证是否符合安全需求定义和产品质量标准的过程
类比项 | 常规测试 | 安全测试 |
---|---|---|
目标差异 | 常规测试以发现 Bug 为目标 | 安全测试以发现安全隐患为目标 |
假设条件差异 | 常规测试假设导致问题的数据是用户不小心造成的,接口一般只考虑用户界面 | 安全测试假设导致问题的数据是攻击者处心积虑构造的 |
思考域差异 | 常规测试以系统所具有的功能为思考域 | 安全测试的思考域不但包括系统的功能,还有系统的机制、外部环境、应用与数据自身安全风险与安全 |
问题发现模式差异 | 常规测试以违反功能定义为判断依据 | 安全测试以违反权限与能力的约束为判断依据 |
1.跨站脚本(XSS)
XSS 又叫 CSS(CROSS SET SCRIPT),跨站脚本攻击。它指的是恶意攻击者往 WEB 页面里插入恶意的 html 代码,当用户浏览该页面时,嵌入其中的 html 代码会被执行,从而达到恶意用户的特殊目的;(钓鱼、盗取 cookie、操纵受害者的浏览器、蠕虫攻击)
2.反射型跨站(Reflected XSS)
服务器端获取 http 请求中的参数,未经过滤直接输出到客户端。如果这些参数是脚本,它将在客户端执行(钓鱼常见)。
3.存储型跨站(Stored XSS)
用户输入的数据存在服务器端(一般存在数据库中),其他用户访问某个页面时,这些数据未经过滤直接输出。这些数据可能是恶意的脚本,对其他用户造成危害。(挂马
常见)
在允许上传文件的应用中,攻击者上传一个包含恶意代码的 html 或者 txt 文件,用户浏览这些文件执行恶意代码;
一般的应用中上传图片最普遍,如果图片中包含恶意代码的 html 或者 txt 文件,,低版的 IE 直接请求这个图片时,将忽略 Content-Type 执行图片中的代码。
4.DOM 跨站 (DOM-Based XSS)
攻击者构造一个包含恶意 Javascript 的 URL,然后引诱用户请求这个 URL。服务器收到请求后没有返回恶意的 Javascript。
浏览器在处理 URL 中的数据时,执行恶意代码。
5.跨站请求伪造 (CSRF)
强迫受害者的浏览器向一个易受攻击的 Web 应用程序发送请求,最后达到攻击者所需要的操作行为。
恶意请求会带上浏览器的 Cookie。受攻击的 Web 应用信任浏览器的 Cookie。
6.SQL 注入
用户输入的数据未经验证就用来构造 SQL
查询语句,查询数据库中的敏感内容,绕过认证添加、删除、修改数据、拒绝服务。
7.XML 注入
和 SQL 注入原理一样,XML 是存储数据的地方,如果在查询或修改时,如果没有做转义,直接输入或输出数据,都将导致 XML 注入漏洞。攻击者可以修改 XML 数据格式,增加新的 XML 节点,对数据处理流程产生影响。
8.URL 跳转
Web 应用程序接收到用户提交的 URL 参数后,没有对参数做” 可信任 URL” 的验证,就向用户浏览器返回跳转到该 URL 的指令。(钓鱼攻击)
9.文件系统跨越
文件系统中../代表上级目录,通过一个或多个../跨越目录限制。
10.系统命令
用户提交的参数用于执行系统命令的参数。
使用”|” 或”;” 执行多条命令。
11.文件上传
Web 应用程序在处理用户上传的文件时,没有判断文件的扩展名是否在允许的范围内,或者没检测文件内容的合法性,就把文件保存在服务器上,甚至上传脚本木马到 web 服务器上,直接控制 web 服务器。(未限制扩展名、未检查文件内容、病毒文件)
12.任意文件下载
下载附件等功能
Apache 虚拟目录指向
Java/PHP 读取文件
下载数据库配置文件等
目录浏览
13.权限控制
有没有权限
有些系统不需要权限控制
有没有设置权限
有了强大的权限系统,但是没有使用
有没有偷工减料权限
URL 级别
菜单级别
14.访问控制
水平权限
Web 应用程序接收到用户请求,修改某条数据时,没有判断数据的所属人,或判断数据所属人时,从用户提交的 request 参数(用户可控数据)中,获取了数据所属人 id,导致恶意攻击者可以通过变换数据 ID,或变换所属人 id,修改不属于自己的数据。
垂直权限
由于 web 应用程序没有做权限控制,或仅仅在菜单上做了权限控制,导致的恶意用户只要猜测其他管理页面的 URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升目的。
15.Session Expires
会话过期
浏览器过期
服务器 30 分钟无动作过期
服务器 24 小时强制过期
保持会话
AppScan
一款安全漏洞扫描工具,它相当于是"探索"和"测试"的过程,最终生成很直观的测试报告,有助于研发人员分析和修复
官网:https://www.ibm.com/developerworks/downloads/r/appscan/
参考:https://www.cnblogs.com/benpao1314/p/8065720.html
BurpSuite
一款信息安全从业人员必备的集成型的渗透测试工具,它采用自动测试和半自动测试的方式,包含了 Proxy,Spider,Scanner,Intruder,Repeater,Sequencer,Decoder,Comparer 等工具模块;
Proxy 功能可以拦截 HTTP/S 的代理服务器(手机和 web);
Spide 功能 - 智能感应的网络爬虫;
Intruder 功能可以对 web 应用程序进行自动化攻击等,非常适合做安全测试。
通过拦截 HTTP/HTTPS 的 web 数据包,充当浏览器和相关应用程序的中间人,进行拦截、修改、重放数据包进行测试。
官网:https://portswigger.net/burp/
参考:https://www.cnblogs.com/nieliangcai/p/6692296.html
Nmap
一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端。
官网:https://nmap.org/
参考:https://blog.csdn.net/m0_37268841/article/details/80404613
sqlmap
一个开源的渗透测试工具,可以用来进行自动化检测,利用 SQL 注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
官方网站:http://sqlmap.org/,
下载地址:https://github.com/sqlmapproject/sqlmap/zipball/master
演示视频:https://asciinema.org/a/46601
教程:http://www.youtube.com/user/inquisb/videos
参考:https://www.freebuf.com/sectool/164608.html
安全测试用例可参考文档:https://www.cnblogs.com/imyalost/p/8243128.html
安全测试工具原文链接:https://blog.csdn.net/lb245557472/article/details/88572607