本文最后更新于 2018年02月13日 20:41 可能会因为没有更新而失效。如已失效或需要修正,请留言!

原创文章,转载请标明出处!

0x00 介绍

鲁迅说:偷窃一个的是创意剽窃,偷窃很多人的创意是研究。

我与某狗的恩恩怨怨-ChaBug安全
本文是个人学习的一个小总结,很多思路都是学习网上大佬的,可能本文中的某个思路或许已经被公布,但是我阅历比较少,并不知道,如果有重复的,可以提出来,我会文章后面贴上地址。

0x01 上传绕过

环境

Windows版某狗ApacheV3.5+phpstudy
我与某狗的恩恩怨怨-ChaBug安全
说道这里,可能有人会吐槽你这是V3.5的不是还有个V4.0的嘛,什么文章啊垃圾。关于版本问题我以前写过一篇水文,绕的是V4.0加服务器安全狗,不多说直接上图。
我与某狗的恩恩怨怨-ChaBug安全
其实版本是有差异但是方法都是一样的。

绕过

Burp抓包 原本数据包

思路:改变大小写+垃圾数据填充+删除
主要从这里入手
Content-Disposition: form-data; name="file"; filename="1.php"
我与某狗的恩恩怨怨-ChaBug安全
Content-Disposition:大写C改为小写c
我与某狗的恩恩怨怨-ChaBug安全
form-data;前面加zz
我与某狗的恩恩怨怨-ChaBug安全
form-data;f去掉
上面三个例子只是简单的一个小例子,我想给大家说的其实是,我们可以下面的数据为所欲为
Content-Disposition: form-data; name="file"; filename="1.php"
比如随便删除,修改,回车,增添,倒转都可以,然后你会发现绕狗上传是如此简单。
下面介绍几个有趣点的:
filename="4.php"改成filename=4.php filename""
我与某狗的恩恩怨怨-ChaBug安全
倒转把Content-Type: application/octet-stream提到上面来
我与某狗的恩恩怨怨-ChaBug安全
name="file"提到前面来
Content-Disposition: name="file"; form-data; filename="6.php"
回车:
我与某狗的恩恩怨怨-ChaBug安全
还有 " ' ;

就到这里告一段落了,关于狗的版本差异问题没多大,上面的方法试试,然后就可以找到了,大家可以多动手,发挥脑洞,这类方法也可以在其他WAF试试,给大家提供些思路协议未覆盖Fuzz模糊测试突破文件上传

0x02 免杀一句话

这里我详细讲解一个过狗过D盾的php一句话的编写。在Tool论坛分享过

  • 先来看看我们常见的PHP一句话长啥样


首先我们需要了解两个PHP函数 call_user_func()array_map()

  • call_user_func()

运行结果
我与某狗的恩恩怨怨-ChaBug安全
大家知道 assert是PHP一句话中常见的执行函数

如果我们这样写是不是就组成了assert, 满足文章开头常见一句话的特征咯。

  • array_map()

看个小例子i
我与某狗的恩恩怨怨-ChaBug安全
效果: 大家只要记住 $arr可以是个数组
我与某狗的恩恩怨怨-ChaBug安全
如果我们这样写,也算个数组了,看到这里很多小伙伴灵机一动
$i = array($_POST[x]);

  • 编写一句话

把上述的列子结合起来就可以了
我与某狗的恩恩怨怨-ChaBug安全
去掉注释比较方便。

是免杀的,过狗的可以的
tool5.png

  • 总结

主要是用各种方法拼接组合相关执行函数,然后运用回调函数的方法来执行。免杀可能是一时的,但是思路是活的,大家可以去学学php基础,也可以轻易写出免杀的一句话。

0x03 免杀大马

思路来源

  • 首先需要一份大马源码

tools5.png

  • 思路

  • 免杀

我与某狗的恩恩怨怨-ChaBug安全
有人说这只是静态免杀,大马操作时候还会拦截,然而并不会。
我在大马上执行命令还是不会拦截。
tools7.png

总结

我们是站在前人的肩膀上成长起来的。

喜欢这篇文章的话就点一点喜欢吧!