Vulnerabilities > CVE-2003-0343 - Local Security vulnerability in Selom Ofori Blackmoon FTP Server 2.6

047910
CVSS 4.6 - MEDIUM
Attack vector
LOCAL
Attack complexity
LOW
Privileges required
NONE
Confidentiality impact
PARTIAL
Integrity impact
PARTIAL
Availability impact
PARTIAL
local
low complexity
selom-ofori
nessus

Summary

BlackMoon FTP Server 2.6 Free Edition, and possibly other distributions and versions, generates an "Account does not exist" error message when an invalid username is entered, which makes it easier for remote attackers to conduct brute force attacks.

Vulnerable Configurations

Part Description Count
Application
Selom_Ofori
1

Nessus

NASL familyFTP
NASL idBLACKMOON_FTP_USERS_ENUM.NASL
descriptionThe version of BlackMoon FTP running on the remote host issues a special error message when a user attempts to log in using a nonexistent account. An attacker may use this flaw to make a list of valid accounts, which can be used to mount further attacks.
last seen2020-06-01
modified2020-06-02
plugin id11648
published2003-05-27
reporterThis script is Copyright (C) 2003-2018 and is owned by Tenable, Inc. or an Affiliate thereof.
sourcehttps://www.tenable.com/plugins/nessus/11648
titleBlackMoon FTP Login Error Message User Enumeration
code
#
# (C) Tenable Network Security, Inc.
#
# ref: https://marc.info/?l=bugtraq&m=105353283720837&w=2
#


include("compat.inc");


if(description)
{
 script_id(11648);
 script_cve_id("CVE-2003-0343");
 script_bugtraq_id(7647);
 script_xref(name:"Secunia", value:"8840");
 script_version ("1.20");
 
 script_name(english:"BlackMoon FTP Login Error Message User Enumeration");
 script_summary(english:"Checks for the ftp login error message");
	     
 script_set_attribute(
   attribute:"synopsis",
   value:"The remote FTP server has a user enumeration vulnerability."
 );
 script_set_attribute( attribute:"description",  value:
"The version of BlackMoon FTP running on the remote host issues a
special error message when a user attempts to log in using a
nonexistent account.

An attacker may use this flaw to make a list of valid accounts,
which can be used to mount further attacks." );
 script_set_attribute(
   attribute:"see_also",
   value:"https://marc.info/?l=bugtraq&m=105353283720837&w=2"
 );
 script_set_attribute(
   attribute:"solution", 
   value:"Upgrade to the latest version of BlackMoon FTP."
 );
 script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:N/A:N");
 script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
 script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N");
 script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
 script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
 script_set_attribute(attribute:"exploit_available", value:"false");
 script_set_attribute(attribute:"plugin_publication_date", value: "2003/05/27");
 script_set_attribute(attribute:"vuln_publication_date", value: "2003/05/20");
 script_cvs_date("Date: 2018/11/15 20:50:22");
 script_set_attribute(attribute:"plugin_type", value:"remote");
 script_end_attributes();

 script_category(ACT_GATHER_INFO);
 script_family(english:"FTP");
 script_copyright(english:"This script is Copyright (C) 2003-2018 and is owned by Tenable, Inc. or an Affiliate thereof.");
 script_dependencies("ftpserver_detect_type_nd_version.nasl", "logins.nasl", "smtp_settings.nasl");
  script_exclude_keys("global_settings/supplied_logins_only");
 script_require_ports("Services/ftp", 21);
 exit(0);
}

#
# The script code starts here : 
#

include("audit.inc");
include("ftp_func.inc");
include("global_settings.inc");

if (supplied_logins_only) audit(AUDIT_SUPPLIED_LOGINS_ONLY);

port = get_ftp_port(default: 21);

soc = open_sock_tcp(port);
if (! soc) exit(1, "Cannot connect to TCP port "+port+".");

 ftp_debug(str:"custom banner");
 banner = ftp_recv_line(socket:soc);
 if (!banner) exit(1, "Cannot read FTP banner from port "+port+".");
 send(socket:soc, data:('USER nessus' + rand() + rand() + '\r\n'));
 r = recv_line(socket:soc, length:4096);
 if(!r)exit(0);
 
 send(socket:soc, data:('PASS whatever\r\n'));
 r = recv_line(socket:soc, length:4096);
 if(!r) exit(0);
 close(soc);
 if("530-Account does not exist" >< r) security_warning(port);