WAF基础知识

waf处理逻辑

  • 取得用户请求数据
  • 将数据与异常请求判定的正则进行匹配
  • 发现请求有异常就进行拦截动作

waf部署方式

  1. 通过部署反向代理服务直接取得用户请求的http数据
  2. 通过硬件设备直接读取网络层数据在解析出用户请求的HTTP数据
  3. 通关读取网卡流量取得用户数据

监测目标网站是否使用waf

在接收到有攻击倾向的请求之后,waf大致表现如下

  1. 在页面中出现明显的waf提示
  2. 出现异常的http响应码(403,303,501,404等)而正常的响应码应为200
  3. 网站停止对用户的请求进行响应。

nmap 测试 nmap -p 80,443 --script=http-waf-detect
实现思路

  • 向目标发送一个正常请求A1
  • 记录这个请求的回应B1
  • 向目标发送一个攻击请求A2
  • 记录这个请求的回应B2
  • 比较B1和B2,如果两者相同,则没使用waf,否则则使用了waf
  • 检测waf的工具:wafw00f url(kali中有)

云waf

用户将要被保护的网站域名解析权交给云waf系统,域名解析权移交完成后,所有针对被保护网站的请求,将会被dns服务器解析到指定云waf上。访问网站的流量会经过云waf。
攻击者获取真实ip即可绕过云waf

  • 一些没有waf保护的子域名会泄露web服务器真实IP地址
  • 一些IP数据库(如viewdns.info)往往会保存网站所使用过的域名解析记录
  • 使用censys.io 或shodan.io的搜索引擎查找安装证书的源IP地址
  • 执行一个操作,让站点连接某个地方,来显示站点IP源地址
  • 利用SPF(Sender Policy Framework 的缩写,一种以IP地址认证电子邮件发件人身份的技术。 接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回)之类的DNS记录也有可能获得源IP地址
  • 网站源代码中的超链接可能包含指向子域名的IP地址
  • 检查公共源或日志文件,可能包含指向源的源IP地址或子域。
  • ping 根域名扫c段,配置waf时,配置人员可能只把 www.xxx.com加入waf而未把根域名加入waf

防范:

  • 使用云waf后,更换一个新的地址,使历史地址无效
  • 在web服务器与外部的连接处使用防火墙进行访问控制,限制web服务器只接收来自云waf的流量。

理想的waf

  • 对数据流量进行智能上下文检查,waf对数据流量进行完整的协议解析和评估。如当检测到一段数据流量是HTTP请求头部,按照这个格式进行解析。
  • 实现难点:当前waf环境过于复杂,waf需掌握所有的协议实现细节。

绕waf情形

  • waf误认为该攻击请求不在检查范围内
  • 虽然对攻击请求进行了检查,但与服务器(服务器应用程序/语言解释器和数据库)使用了不同的解析方法,waf判断该攻击请求无害。当服务器使用了不同的解释方法时,就会产生危害
  • 规则不完整

不在检查范围内

有些waf为减轻工作量,如果请求来自外部,才会检查,如请求来自可信地址则放行。HTTP头部字段

  • x-forwarded-for 将该字段改为缓存服务器
  • x-remote-IP 将字段值修改为代理服务器,或者同网段IP
  • x-originating-IP 将该字段修改为服务器主机的IP或者127.0.0.1
  • x-remote-addr 将该字段修改为内部ip
    工具 :burpsuite插件:bypasswaf (github可下载)

waf与操作系统解析差异

很多linux采用bash作为默认shell。bash中含通配符
*:0到无穷多个任意字符
?:一定有一个任意字符
[]:一定有一个载括号内的字符(非任意字符)
[-]:若有减号在中括号内时,代表编码顺序内的所有字符
/:目录符号,用于路径分隔
用/???/?s代替 /bin/ls

攻击者获取目标服务器控制权限

  • 编写木马文件,放置在自己服务器上
  • 控制目标服务器,使用wget命令下载木马文件
  • 控制目标服务器,使用chmod修改木马文件权限并执行

绕waf 分块编码

  • 在头部加入Transfer-Encoding:chunked
  • 每个分块包含十六进制的长度值和数据,长度值独占一行
  • 最后一个分块的长度值必须是0

猜你喜欢

转载自blog.csdn.net/u011975363/article/details/118805433