免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。
目录
一、Waf分类
软件型WAF
硬件型WAF
基于云WAF
开源型WAF
二、常见WAF进程和服务
(1) D盾
(2) 云锁
(3) 阿里云盾
(4) 腾讯云安全
(5) 360主机卫士
(6) 网站/服务器安全狗
(7) 护卫神·入侵防护系统
(8) 网防G01政府网站综合防护系统(“云锁”升级版)
三、WAF识别
(1) wafw00f/WhatWaf
(2) sqlmap -identify-waf
(3) 项目地址
四、WAF规则引擎原理
一、Waf分类
WAF分为非嵌入型WAF和嵌入型WAF,非嵌入型指的是硬WAF、云WAF、虚拟机WAF之类的;嵌入型指的是web容器模块类型WAF、代码层WAF。
WAF对于一些常规漏洞(如注入漏洞、XSS漏洞、命令执行漏洞、文件包含漏洞)的检测大多是基于“正则表达式”和“AI+规则”的方法,因此会有一定的概率绕过其防御。绕过waf的测试中,有很多方法可以使用,以下常用方法:
大小写绕过
注释符绕过
编码绕过
分块传输绕过
使用空字节绕过
关键字替换绕过
http协议覆盖绕过
白名单ip绕过
真实ip绕过
Pipline绕过
参数污染
溢出waf绕过
可以把WAF分为四类:
云WAF类
硬件WAF类
软件WAF类
网站内置WAF类
云waf基于云端的检测,安装简单,修改DNS解析或在服务器安装云WAF的模块即可。
硬件WAF串联在内网的交换机上,防护范围大。
软件WAF安装在服务器上根据网站流量决定占用的内存量。
网站内置WAF在系统后台内置一项安全功能以便管理者使用。在这些类别内,硬件WAF防护能力较强。
软件型WAF
D盾:http://www.d99net.net/
云锁:https://yunsuo.qianxin.com/
网防:http://www.weishi110.cn/static/index.html
安全狗:https://www.safedog.cn/
护卫神:https://www.hws.com/
智创:https://www.zcnt.com/
悬镜:https://www.xmirror.cn/
UPUPW:https://www.upupw.net/
WTS-WAF:https://www.west.cn/
安骑士:https://help.aliyun.com/product/28449.html
dotDefender:http://www.applicure.com/Products/
硬件型WAF
绿盟: https://www.nsfocus.com.cn/
安恒:https://www.dbappsecurity.com.cn/
铱(yi)迅:https://www.yxlink.com/
天融信
深信服
启明星辰
知道创宇
F5 BIG-IP:https://www.f5.com/
基于云WAF
安全宝
创宇盾:https://defense.yunaq.com/cyd/
玄武盾
腾讯云
百度云
西部数码
阿里云盾
奇安信网站卫士
开源型WAF
Naxsi:https://github.com/nbs-system/naxsi
OpenRASP:https://github.com/baidu/openrasp
ModSecurity:https://github.com/SpiderLabs/ModSecurity
https://github.com/SpiderLabs/owasp-modsecurity-crs
WAF比较常见的监测机制特点有以下几种。
(1)异常检测协议:拒绝不符合HTTP标准的请求,也可以只允许符合HTTP协议的部分选项通过,也有一些web应用防火墙还可以限定http协议中那些过于松散或未被完全制定的选项。
(2)增强输入验证:增强输入验证,对恶意字符进行拦截。
(3)及时补丁:及时屏蔽掉新型漏洞,避免攻击者进行攻击,主要依靠WAF厂商对新型漏洞的及时响应速度
(4)基于规则的保护和基于异常的保护:基于规则的保护可以提供各种web应用的安全规则,waf生产商会维护这个规则库,并及时为其更新。用户可以按照这些规则对应用进行全方面检测。还有的产品可以基于合法应用数据建立模型,并以此为依据判断应用数据的异常。但这需要对用户企业的应用具有十分透彻的了解才可能做到
(5)状态管理;能够判断用户是否是第一次访问,将请求重定向到默认登录页面并且记录事件,或对暴力破解行为进行拦截。
(6)其他防护技术:如隐藏表单域保护、抗入侵规避技术、响应监视和信息泄露保护。
(7)配置规则:可以自定义防护的规则,如是否允许“境外ip”的访问
二、常见WAF进程和服务
(1) D盾
服务名:d_safe
进程名:D_Safe_Manage.exe、d_manage.exe
(2) 云锁
服务端监听端口:5555
服务名:YunSuoAgent/JtAgent(云锁Windows平台代理服务)、YunSuoDaemon/JtDaemon(云锁Windows平台守护服务)
进程名:yunsuo_agent_service.exe、yunsuo_agent_daemon.exe、PC.exe
(3) 阿里云盾
服务名:Alibaba Security Aegis Detect Service、Alibaba Security Aegis Update Service、AliyunService
进程名:AliYunDun.exe、AliYunDunUpdate.exe、aliyun_assist_service.exe
(4) 腾讯云安全
进程名:BaradAgent.exe、sgagent.exe、YDService.exe、YDLive.exe、YDEdr.exe
(5) 360主机卫士
服务名:QHWafUpdata
进程名:360WebSafe.exe、QHSrv.exe、QHWebshellGuard.exe
(6) 网站/服务器安全狗
服务名:SafeDogCloudHelper
、SafedogUpdateCenter
、SafeDogGuardCenter
(服务器安全狗守护中心)进程名:SafeDogSiteApache.exe、SafeDogSiteIIS.exe、SafeDogTray.exe、SafeDogServerUI.exe、SafeDogGuardCenter.exe、CloudHelper.exe、SafeDogUpdateCenter.exe
(7) 护卫神·入侵防护系统
服务名:hws、hwsd、HwsHostEx/HwsHostWebEx(护卫神主机大师服务)
进程名:hws.exe、hwsd.exe、hws_ui.exe、HwsPanel.exe、HwsHostPanel.exe/HwsHostMaster.exe(护卫神主机大师)
(8) 网防G01政府网站综合防护系统(“云锁”升级版)
服务端监听端口:5555
服务名:YunSuoAgent、YunSuoDaemon(不知是否忘了替换了!)
进程名:gov_defence_service.exe、gov_defence_daemon.exe
三、WAF识别
WAF绕过不仅要了解WAF检查的原理,还需要识别是什么类型的WAF,不同类型,不同品牌的waf监测机制不一样,绕过的方式也不同。
(1) wafw00f/WhatWaf
利用wafw00f识别WAF,可以在WAF指纹目录下自行编写脚本。这类WAF识别工具的原理基本都是根据HTTP头部信息、状态码以及WAF拦截页中的图片、文字做为特征来进行检测,如wafw00f工具中的yunsuo.py脚本就是根据cookie中的security_session_verify来检测的。
/usr/lib/python3/dist-packages/wafw00f/plugins
#!/usr/bin/env python
NAME = "Yunsuo"
def is_waf(self):
if self.matchcookie("^security_session_verify"):
return True
return False
(2) sqlmap -identify-waf
利用sqlmap -identify-waf参数识别WAF,一样可以在WAF指纹目录下根据原有脚本和Awesome-WAF项目自行编写WAF指纹识别脚本,但有时可能会因为sqlmap新老版本的原因而导致存放路径不一样。
更新前:/usr/share/sqlmap/waf
更新后:/usr/share/golismero/tools/sqlmap/waf
#!/usr/bin/env python
"""
Copyright (c) 2006-2013 sqlmap developers (http://sqlmap.org/)
See the file "doc/COPYING" for copying permission
"""
import re
from lib.core.enumsimport HTTP_HEADER
from lib.core.settingsimport WAF_ATTACK_VECTORS
__product__ ="ModSecurity: Open Source Web Application Firewall (Trustwave)"
defdetect(get_page):
retval =False
for vectorin WAF_ATTACK_VECTORS:
page, headers, code = get_page(get=vector)
retval = code ==501and re.search(r"Reference #[0-9A-Fa-f.]+", page, re.I)isNone
retval |= re.search(r"Mod_Security|NOYB", headers.get(HTTP_HEADER.SERVER,""), re.I)isnotNone
if retval:
break
return retval
(3) 项目地址
https://github.com/sqlmapproject/sqlmap
https://github.com/EnableSecurity/wafw00f
https://github.com/Ekultek/WhatWaf
https://github.com/0xInfection/Awesome-
Waf工作模式:
关闭模式:对某个站点使用关闭模式,到这个站点的流量就感受不到WAF的存在。一般的做法,是解绑域名,再到web服务上绑定该域名。
监听模式:既过规则,也会直接传递给web服务。防护模式:直接过规则,不会直接传递给web服务
四、WAF规则引擎原理
WAF无非就是拦截有害请求和伪装响应,出于性能考虑,拦截有害请求又分为两个层面,由网络层拦截和由应用层拦截,且任何请求应该先在网络层过滤再到应用层过滤。也就是说,规则引擎分为两块,对请求过滤和对响应过滤,而对请求过滤分为两大步,网络层过滤和应用层过滤。
原理图大致如下:
详情参考:
https://www.cnblogs.com/realjimmy/p/12937247.html#:~:text=WAF%E5%85%A8%E7%A7%B0%E5%8F%ABWeb,Application%20Firewall%EF%BC%8C%E5%92%8C%E4%BC%A0%E7%BB%9F%E9%98%B2%E7%81%AB%E5%A2%99%E7%9A%84%E5%8C%BA%E5%88%AB%E6%98%AF%EF%BC%8C%E5%AE%83%E6%98%AF%E5%B7%A5%E4%BD%9C%E5%9C%A8%E5%BA%94%E7%94%A8%E5%B1%82%E7%9A%84%E9%98%B2%E7%81%AB%E5%A2%99%EF%BC%8C%E4%B8%BB%E8%A6%81%E5%AF%B9web%E8%AF%B7%E6%B1%82%2F%E5%93%8D%E5%BA%94%E8%BF%9B%E8%A1%8C%E9%98%B2%E6%8A%A4%E3%80%82
Waf工作原理:
WAF工作方式是对接收到的数据包进行正则匹配过滤,如果正则匹配到与现有漏洞知识库的攻击代码相同,则认为这个恶意代码,从而对于进行阻断。所以,对于基于规则匹配的WAF,需要每天都及时更新最新的漏洞库。
Waf工作过程:
解析HTTP请求
对接收到数据请求流量时会先判断是否为HTTP/HTTPS请求,之后会查看此URL请求是否在白名单之内,如果该URL请求在白名单列表里,直接交给后端Web服务器进行响应处理,对于不在白名单之内的对数据包解析后进入到规则检测部分。
匹配规则
解析后的数据包会进入到检测体系中进行规则匹配,检查该数据请求是否符合规则,识别出恶意攻击行为。
防御动作
如果符合规则则交给后端Web服务器进行响应处理,对于不符合规则的请求会执行相关的阻断、记录、告警处理。
不同的WAF产品会自定义不同的拦截警告页面,在日常渗透中我们也可以根据不同的拦截页面来辨别出网站使用了哪款WAF产品,从而有目的性的进行WAF绕过。
记录日志
Waf绕过
Waf拦截会出现在安全测试的各个层面,掌握各个层面的分析和绕过技术最为关键。
信息搜集
绕过分析:抓包技术、waf说明、FUZZ测试
绕过手法:
数据包特征:请求方式、模拟用户、爬虫引擎、白名单机制
请求速度:延时(阿里3秒)、代理池、爬虫引擎、白名单机制
漏洞发现
工具:
综合:awvs、xray、appscan
单点:tpscan、wpscan、st2can
触发:
扫描速度:延时、代理池、白名单
工具指纹:特征修改、模拟用户
漏洞payload:数据变异、冷门扫描
漏洞利用
Sql注入、文件上传、xss跨站、文件包含、RCE执行
Sql注入:
如需sgImap注入 修改us头及加入代理防cc拦截自写tamper模块
安全狗:参考之前payload
Aliyun:基本修改指纹即可
宝塔:匹配关键字外加/*等
aglmap --proxy="http://127.0.0.1:8080" --tamper="waf.py" --.random-agent
#文件上传
php截断参考前面上传waf绕过payload
#xss跨站
利用xsstrike绕过 加上--timeout或--proxy绕过cc
https://www.freebuf.com/sectool/142044.html
其他集合
RCE:
加密加码绕过?算法可逆?关键词绕过?提交方法?各种测试!
ex=sy=ser_replace ('', ,, 'pahpxinxfo() '); assert (sy) ; asubmit
32648F90E49BAA4
文件包含:没什么好说的就这几种
.\ .../ ..等
权限控制:
脚本:asp、php、jsp、aspx、py、war等
工具:菜刀、蚁见、冰蝎
代码:加密混淆、变量覆盖、异或生成
行为:指纹变异、自写轮子
检测:常规安全脚本工具使用