WAF CDN 的识别方法

VSole2021-11-22 07:37:57

在日常渗透中,经常会遇到目标网站存在 WAF 和 CDN 的情况,如果直接对其进行漏洞扫描的话,大概率发现不了安全问题,反而给目标留下很多漏洞测试的告警,即浪费时间又没有效果,在做漏洞扫描之前可以先进行 WAF 的识别,如果确认没有 WAF 的情况,在进行漏洞扫描,而存在 WAF 的目标,可以进行手工测试,尽量不要使用明显的攻击方式,找一些逻辑方面的问题,WAF 是无法进行识别的。

首先看看 CDN 是什么,如何识别?

CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。--百度百科

光看介绍不太明显,下图是 cloudflare 保护前后的架构:

在部署 CDN 之前,我们可以直接访问目标网站,没有任何阻碍,当然做任何事儿都是可以的,当目标部署了 CDN 之后,用户访问的所有流量都会经过 CDN 设备,然后 CDN 设备针对用户的访问,进行数据的返回,相当于有了一层反向代理,其实 WAF 的原理也是一样的,只不过核心功能不一样,CDN 的核心是针对网站进行加速,让全球用户访问该网站都是如丝般顺滑,而 WAF 的核心是让做坏事的人,无处遁形,及时制止。

如果要去识别 CDN 该怎么办呢?如果部署了 CDN,我们会在最开始访问时就接触到它,所以域名解析的 IP 地址就是 CDN 的 IP 而非目标的真实 IP,所以通过 IP 来判断是主要的方式,前提是你要有一份完整的 CDN 系统 IP 地址规则库,所幸有巨人整理好了,参考项目:

https://github.com/timwhitez/Frog-checkCDN

有了这个就可以很大概率上识别出网站是否存在 CDN 了,规则中还有一个关于 CNAME 的规则,这是什么原理?那得看看 CDN 是如何配置的,毕竟网站系统还是自己的不是 CDN 厂商的,所以不可能直接配置域名 DNS IP 到 CDN 处,需要一个中转,在不改变目标网站配置的情况下,让用户流量先过 CDN 然后再到目标网站,看一下腾讯云关于 CDN 的配置方式:

配置 CNAME 就能做到上面的需求,在不改变目标网站配置的情况下,直接通过修改域名的 CNAME 记录就可以达到部署 CDN 的效果,所以是可以通过获取域名 CNAME 记录,来判断网站是否使用了 CDN 的情况。以上就是 CDN 的识别方法。

其次,看看 WAF 是如何识别的?

WAF 的配置跟 CDN 的配置差不多,如果类似 CDN 的配置,那么该 WAF 的部署方式属于串连部署,就是所有流量先经过 WAF 设备,然后再到后端服务器,这样对于攻击事件,可以做到实时拦截,有一个缺点就是,容易误伤用户,如果 WAF 设备出现故障,那么会影响一大片用户的访问,造成 p0 级故障,这是安全同事不想看到的。

那么还有啥方式呢?就是旁路部署的方式,原理就是将所有流量镜像到 WAF 设备,对于 WAF 设备来说,流量是实时的,但是对于目标系统来说只是将流量复制了一份而已,这种部署方式无法做到实时拦截,需要 WAF 审计出攻击事件之后,再给目标系统发送指令,来对攻击来源进行限制,比如封 IP,封账号之类的操作。如图:

那么如何识别呢?首先可以尝试识别 CDN 的那种方式,从 IP、CNAME 上去匹配相应规则,这种可以识别那些 WAF 串联在目标与用户之间的 WAF,而旁路 WAF 部署则需要进行 WAF 触发拦截之后,根据相应数据来进行规则判断,比如项目:

https://github.com/EnableSecurity/wafw00f
https://github.com/stamparm/identYwaf

核心原理就是,有一个 WAF 指纹库,通过构造恶意 payload 来进行触发 WAF 拦截,然后再进行指纹比对,如果能比对上则说明存在 WAF,比如 sqlmap 检测 WAF 的 Payload:

HEURISTIC_PAYLOAD = "1 AND 1=1 UNION ALL SELECT 1,NULL,'<script>alert(\"XSS\")</script>',table_name FROM information_schema.tables WHERE 2>1--/**/; EXEC xp_cmdshell('cat ../../../etc/passwd')#"  # Reference: https://github.com/sqlmapproject/sqlmap/blob/master/lib/core/settings.py

当我们在一个没有 WAF 的网站做测试时,使用上面的 payload 是不会有任何变化的,如图:

https://edu.xazlsec.com/?1%20AND%201=1%20UNION%20ALL%20SELECT%201,NULL,%27%3Cscript%3Ealert(/%22XSS/%22)%3C/script%3E%27,table_name%20FROM%20information_schema.tables%20WHERE%202%3E1--/etc/passwd%27)#

当我们在一个有 WAF 的网站测试时,如图:

出现了跟正常访问不一样的画面,这就证明该网站存在了 WAF,因为 WAF 厂商也要考虑用户体验问题,正常用户难免会触发 WAF 拦截,WAF 误伤问题很常见,所以拦截页面都还是比较友好的,而且很有辨识度,能够即使发现问题,经过投诉之后,及时解决,这对于识别 waf 来说也提供了便利。

wafcdn
本作品采用《CC 协议》,转载必须注明作者和本文链接
WAF CDN 的识别方法
2021-11-22 07:37:57
CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。
Vxscan介绍python3写的综合扫描工具,主要用来敏感文件探测,WAF/CDN识别,端口扫描,指纹/服务识别,操作系统识别,弱口令探测,POC扫描,SQL注入,绕过CDN,查询旁站等功能,主要用来甲方自测或乙方授权测试,请勿用来搞破坏。看到上面的介绍也吓一跳,这么多功能?
LangSrcCurise资产监控系统是一套通过网络搜索引擎监控其下指定域名,并且能进行持续性信息收集整理的自动化资产监控管理系统,基于Django开发。
0x05 如何获取这些内容这个内容属于信安之路为大家提供的一种信息收集的服务,如果你有相关需求可以联系微信 myh0st 咨询,针对每次服务的收费,初步制定为:信安之路 VIP 成员:9.9 元/次服务其他未加入 VIP 的成员:19.9 元/次服务这些信息仅供在授权情况下使用,利用这些信息切勿做违法的活动,一切后果由使用方承担。
如果手工测试无果后再用代理手法扫描网站,必要的时候设置二级代理。什么站能扫什么站不能扫,心里一定要有点 b 数!浅蓝的渗透测试导图以及小工具这里有一个更加详细的导图,可以做一个大致的方向参考,跟着方向逐一测试, 期间也可以巩固基础。
docker run -it -d -p 13443:3443 -p 8834:8834 leishianquan/awvs-nessus:v1. 如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含,远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等验证码与邮箱以及token的返回泄露,以及后台为校验从而可删除的参数。从某个成功请求中捕获数据包观察cookie或者token是否存在规律或加密。token的key参数解密构建获取真实user密钥,可拼接、规律、时间戳……winodws桌面:TeamViewerQS单文件windows下载文件;certutil -urlcache -split -f?
HW总结模板与实例
2022-08-05 06:25:34
安排专人进行对接,随时与防守团队保持联络,通过电话会议每日协商,汇总当日所发生的安全事件,针对安全事件进行应急响应和处置。编制X份防守成果报告,经演戏指挥部确认,得分XX分。截止目前,已完成所有问题整改、漏洞修复。
2022HVV总结模板与实例
2022-08-04 10:12:41
安排专人进行对接,随时与防守团队保持联络,通过电话会议每日协商,汇总当日所发生的安全事件,针对安全事件进行应急响应和处置。编制X份防守成果报告,经演戏指挥部确认,得分XX分。截止目前,已完成所有问题整改、漏洞修复。
原生、弹性、智能、透明、开放
VSole
网络安全专家