技术分享:从甲方的角度谈谈WAF测试方法

简介:   0X01 测试思路  环境搭建  服务器:使用DVWA搭建一套包含各类漏洞的网站,并开启access日志以供分析。DVWA搭建过程不细说。  WAF:反向代理部署,将DVWA服务器做反向代理后映射出VS IP。测试时所有payload发送至VS IP,经WAF处理后交给DVWA服务器。  测试方法:客户端构造payload提交给VS IP,服务器查看access日志。如被有效识别并过滤,access日志应没有相关内容。

  0X01 测试思路

  环境搭建

  服务器:使用DVWA搭建一套包含各类漏洞的网站,并开启access日志以供分析。DVWA搭建过程不细说。

  WAF:反向代理部署,将DVWA服务器做反向代理后映射出VS IP。测试时所有payload发送至VS IP,经WAF处理后交给DVWA服务器。

  测试方法:客户端构造payload提交给VS IP,服务器查看access日志。如被有效识别并过滤,access日志应没有相关内容。

  0X02 OWASP TOP10 常规防御

  SQLi

  get型注入:

  /dvwa/vulnerabilities/sqli/?id=22&Submit=Submit#的参数id可以注入,构造payload提交即可。

  post型注入:DVWA登录过程用burpsuite抓包,即可构造post型注入。

  XSS

  反射型XSS和存储型XSS在DVWA中都有,构造payload即可。

  CSRF、command injection、Brute Foce、File upload等等方式,DVWA都有了,不细说。

  漏掉的是SSRF、反序列化、structs、心脏滴血,这些攻击在当前版本的DVWA中是没有减肥设计的,需要单独考虑。

  0X03 绕过技术的防御

  除了最常见攻击手法的防御以外,WAF还应该具备识别变形的Payload的能力。

  目前国内外商业WAF可以识别99%以上的常规攻击手段,区别主要就体现在对各类编码后的变形Payload的分析能力上。

  这里面又区分成了两大类思路。

  思路一:

  WAF抓取到HTTP包后,做多重解码,将每重解码的结果提取正则,与特征库进行匹配。各家能解码的层数会有区别。F5的ASM可以支持最多5层并且允许用户手工设定层数。其他家虽不可指定解码层数,但都具备响应能力。

  思路二:

  考虑到正则匹配容易误报漏报,有厂家放弃了这种分析模式,转而做语义分析。长亭科技的SqlChop就是如此,详情可阅读SQLChop - 一个新型 SQL 注入检测引擎

  在测试中,需要手工对payload做编码变形。详细说来:

  SQLi变形

  urlencode编码:别小看这种常见的绕过方法,有厂家的WAF还真检测不出来。

  unicode编码

  关键字大小写替换:这个比较常规了,基本是没有检测不到的。

  关键字转为十六进制

  关键字用反引号引起来

  关键字用/#! #/注释引起来

  关键字用/##/注释截断:select转为sel/**/ect

  关键字用%00截断

  提交的HTTP包中,将x-originating-IP 改为127.0.0.1

  提交的HTTP包中,将X-remote-addr 改为127.0.0.1

  SQLMAP的各类TAMPER,挨个试一试吧

  XSS变形

  XSS变形最多,WAF漏报也是最严重的。谁让HTML可利用的标签那么多呢。

  这一块的测试,有赖于测试者平时收集各类XSS payload 的量。

目录
相关文章
|
1月前
|
安全 测试技术
BOSHIDA DC电源模块的安全性能评估与测试方法
BOSHIDA DC电源模块的安全性能评估与测试方法
 BOSHIDA DC电源模块的安全性能评估与测试方法
|
1月前
|
安全
DC电源模块的安全性能评估与测试方法
DC电源模块的安全性能评估与测试方法 DC电源模块的安全性能评估与测试方法应包括以下几个方面: 1. 输入安全性测试:包括输入电压范围、输入电压稳定性、输入电流范围、输入电流保护等方面的测试。测试方法可以是逐步增加输入电压或输入电流,观察模块的工作状态和保护功能。
DC电源模块的安全性能评估与测试方法
|
1月前
|
监控 JavaScript 前端开发
在生产环境中测试和监控Vue项目的方法有哪些?
在生产环境中测试和监控Vue项目的方法有哪些?
27 4
|
1月前
|
芯片
电容在ESD测试中的选用方法
电容在ESD测试中的选用方法
28 2
|
1月前
|
Java Spring
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
9 0
|
3月前
|
敏捷开发 存储 安全
敏捷方法:什么是软件测试中的敏捷模式?
敏捷方法:什么是软件测试中的敏捷模式?
|
1天前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
7 1
|
2天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。
|
17天前
|
自然语言处理 测试技术 持续交付
现代软件测试方法与挑战
传统软件测试方法在当前快速发展的软件开发环境下面临着诸多挑战,因此,现代软件测试方法的探索与应用显得尤为重要。本文将介绍几种现代软件测试方法,并探讨其在应对软件开发挑战方面的作用。
10 0
|
19天前
|
安全 测试技术
深入理解白盒测试:方法、工具与实践
【4月更文挑战第7天】 在软件开发的质量控制过程中,白盒测试是确保代码逻辑正确性的关键步骤。不同于黑盒测试关注于功能和系统的外部行为,白盒测试深入到程序内部,检验程序结构和内部逻辑的正确性。本文将探讨白盒测试的核心技术,包括控制流测试、数据流测试以及静态分析等方法,同时介绍当前流行的白盒测试工具,并讨论如何在实际项目中有效实施白盒测试。文章的目标是为软件测试工程师提供一份综合性指南,帮助他们更好地理解和应用白盒测试技术。

热门文章

最新文章