Windows应急响应|入侵排查指南

0x00介绍WAF

WAF基本上可以分为一下几类。

1. 软件型WAF

以软件形式装在所保护的服务器上的WAF,由于安装在服务器上,所以可以接触到服务器上的文件,直接检测服务器上是否存在WebShell、是否有文件被创建等。

2. 硬件型WAF

 以硬件形式部署在链路中,支持多种部署方式,当串联到链路中时可以拦截恶意流量,在旁路监听模式时只记录攻击不进行拦截。

3.云WAF

一般以反向代理的形式工作,通过配置NS记录或CNAME记录,使对网址的请求报文优先经过WAF主机,经过WAF主机过滤后,将认为无害的请求报文再发送给实际网站服务器进行请求,可以说使带防护的CDN。

4.网站系统内置的WAF

网站系统内置的WAF也可以说是网站系统中内置的过滤,直接镶嵌在代码中,相对来说自由度高,一般有以下几种情况。
①输入参数强制类型转换。
②输入参数合法性检测。
③关键函数执行(sql执行、页面显示、命令执行等)前,对经过代码流程的输入进行检测。
④对输入的数据进行替换过滤后再继续执行代码流程。

0x01网站是否存在WAF判断

1.使用SQLMap

使用SQLMap中自带的WAF识别模块可以识别出WAF的种类,但是如果所安装的WAF并没有什么特征,SQLMap就只能识别出类型是Generic。
命令:sqlmap.py -u “url” –identify-waf –batch

2.手工判断

一般直接在相应的网站url后面直接加上基础的sql测试语句,如union,and 1=1 等

0x02一些简单的绕过WAF方法

例如SQL注入漏洞绕过

1.大小写混合

在规则匹配时只针对特定大写或小写的情况,遇到时可以使用大小写混合绕过。
如:uNion sEleCt 1,2

2.url编码

有些waf不会对普通字符进行url解码检测,可以进行url编码。或者只解码一次的情况下我们可以进行url二次编码。

3.替换关键字

WAF采用替换或者删除select等敏感关键字的时候,如果只匹配一次则很容易进行绕过。如下命令
ununionion selselectect 1,2,3

4.使用注释

注释在截断SQL语句中用的比较多,在绕过WAF时主要使用其替代空格(/*  内容*/),适用于检测过程中没有识别注释或替换掉了注释的waf。
如命令:union/*258*/select/*asd*/1,2,3,4
或者 ?id=1 /*!and*/ 1=2    后面语句与union注入的一致

5.多参数请求拆分

对于多个参数拼接到同一条sql语句中的情况,可以将注入语句分割插入。
   例如请求url时,get参数格式  a=123&b=456,可以将get的参数a和b拼接到sql语句中,如下所示
 and a=123 & b=456 可以这样拼接  and a=union/*&b=*/select 1,2,3

6.生僻函数

使用生僻函数替换成见的函数。例如在报错注入中使用polygon()函数替换常用的updatexml()函数,如下所示。
select polygon((select*from(select*from()a)b));

7.寻找网站源站IP

对于有些waf防护的网站而言,可以找到真实ip地址,然后通过ip访问就可以进行绕过。

 一般寻找网站ip的方法:

  ①寻找网站的历史解析记录。
  ②多地区ping网站,查看ip解析结果。
  ③找网站的二级域名、NS、MX记录等对应的IP。
  ④使网站发送邮件给你,查看发送方的IP。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是黑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值