评论: 又不消停了,IIS remote和又一个Kernel local

[root@aaa ~]# getenforce
Permissive
的也成功。看来这个跟上一个一样,禁用selinux的不受影响,看来还是selinux问题
redhat已经发布补丁:
RHSA-2009:1223 – Security Advisory : http://rhn.redhat.com/errata/RHSA-2009-1223.html
还有一个比较有意思的方法,用iptables:

iptables的output链对UDP包做了限制会导致无法成功提权
跟一下这个程序:
$ strace ./a
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
sendto(3, “”…, 1024, MSG_PROXY|MSG_MORE, {sa_family=AF_UNSPEC, sa_data=”\202\202\202\202\202\202\202\202\202\202\202\202\202\202″}, 16) = 1024
sendto(3, “”…, 1024, 0, {sa_family=AF_UNSPEC, sa_data=”\202\202\202\202\202\202\202\202\202\202\202\202\202\202″}, 16) = -1 EPERM (Operation not permitted)

对比一下源码:
if((fd=socket(PF_INET,SOCK_DGRAM,0))==-1){
perror(”[-] socket()”);
return -1;
}
x0x.sa_family=AF_UNSPEC;
memset(x0x.sa_data,0×82,14);
memset((char *)buf,0,sizeof(buf));
sendto(fd,buf,1024,MSG_PROXY|MSG_MORE,&x0x,sizeof(x0x));
sendto(fd,buf,1024,0,&x0x,sizeof(x0x));
if(getuid()==uid){
printf(”[-] exploit failed, try again\n”);
return -1;

这段代码建了一个udp的socket,然后sendto(fd,buf,1024,0,&x0x,sizeof(x0x));而iptables如果设了output的UDP限制会导致这条语句返回-1 EPERM (Operation not permitted)
同样如果iptables output规则做的严的话系统不受该漏洞影响

取巧的方法,只针对上面的漏洞程序
iptables -A OUTPUT -p udp --dport 33410 -j DROP

Posted by vitter at September 3, 2009 09:05 AM
发表评论













记住个人信息?