友老催我写个webshell+udev localroot的文章。这周末有点空闲时间,捣鼓了一下。公开的udev exploit有两个。一个是kcope写的SHELL版本,一个是jon写的C版本。
shell版本的执行起来有点问题,很明显已经以root身份执行了sh -c chown root:root /tmp/suid; chmod +s /tmp/suid 命令了,但是/tmp/suid的owner还是vtune,这个时候cpu负载很高。所以在利用这个漏洞的时候,注意观察系统的CPU负载。
确认已经是获得root权限了,kill不掉。
[vtune@RHEL5 ~]$ killall sh
sh(1787): Operation not permitted
sh(1854): Operation not permitted
sh: no process killed
反复exp之后,有可能还没返回root shell,这个时候不要泄气,看一下/tmp/suid的owner是不是root,如果是root,直接执行就可以获得root权限了。
[vtune@RHEL5 tmp]$ ls -l /tmp/suid
-rwsrwsr-x 1 root root 4945 Jun 6 16:14 /tmp/suid
c版本的我没成功过,我也在exp作者验证过的gentoo里测试过,无论是在redhat还是gentoo里,strace都返回下面的信息。
bind(3, {sa_family=AF_NETLINK, pid=10836, groups=00000000}, 12) = -1 EADDRINUSE (Address already in use)怀疑是这里出了问题。
从exp代码来看,C版本的exp更适合在webshell里提权,看了下jon的blog,竟然是博士,也不奢望他能指点一二了,继续尝试下 shell版本的好了。
在虚拟机里弄了个php shell,再转了个bind shell试了几次,竟然成功了。。。。后遗症就是sh进程占CPU 100%,这个善后处理一下即可。为啥那么多人都说webshell里无法成功提权-_-
本文转sinojelly51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/401636,如需转载请自行联系原作者