Vulnerabilities > CVE-2005-2614 - Unspecified vulnerability in Crosscom Olicom Discuz

047910
CVSS 7.5 - HIGH
Attack vector
NETWORK
Attack complexity
LOW
Privileges required
NONE
Confidentiality impact
PARTIAL
Integrity impact
PARTIAL
Availability impact
PARTIAL
network
low complexity
crosscom-olicom
nessus

Summary

Discuz! 4.0 rc4 does not properly restrict types of files that are uploaded to the server, which allows remote attackers to execute arbitrary commands via a filename containing ".php.rar" or other multiple extensions that include .php.

Vulnerable Configurations

Part Description Count
Application
Crosscom_Olicom
1

Nessus

NASL familyCGI abuses
NASL idDISCUZ_ARBITRARY_FILE_UPLOAD_FLAW.NASL
descriptionThe remote host is using Discuz!, a popular web application forum in China. According to its version, the installation of Discuz! on the remote host fails to properly check for multiple extensions in uploaded files. An attacker may be able to exploit this issue to execute arbitrary commands on the remote host subject to the privileges of the web server user id.
last seen2020-06-01
modified2020-06-02
plugin id19751
published2005-09-19
reporterThis script is Copyright (C) 2005-2018 Tenable Network Security, Inc.
sourcehttps://www.tenable.com/plugins/nessus/19751
titleDiscuz! <= 4.0.0 rc4 Arbitrary File Upload
code
#
# (C) Tenable Network Security, Inc.
#

include("compat.inc");

if (description)
{
 script_id(19751);
 script_version("1.18");
 script_set_attribute(attribute:"plugin_modification_date", value:"2020/06/12");

 script_cve_id("CVE-2005-2614");
 script_bugtraq_id(14564);
 
 script_name(english:"Discuz! <= 4.0.0 rc4 Arbitrary File Upload");
 script_summary(english:"Checks Discuz! version");
 
 script_set_attribute(attribute:"synopsis", value:
"The remote web server contains a PHP application that is affected by
an arbitrary file upload issue.");
 script_set_attribute(attribute:"description", value:
"The remote host is using Discuz!, a popular web application forum in
China. 

According to its version, the installation of Discuz! on the remote
host fails to properly check for multiple extensions in uploaded
files.  An attacker may be able to exploit this issue to execute
arbitrary commands on the remote host subject to the privileges of the
web server user id.");
 script_set_attribute(attribute:"see_also", value:
"https://seclists.org/fulldisclosure/2005/Aug/438");
 script_set_attribute(attribute:"solution", value:"Unknown at this time.");
 script_set_cvss_base_vector("CVSS2#AV:N/AC:H/Au:S/C:P/I:P/A:P");
 script_set_cvss_temporal_vector("CVSS2#E:U/RL:U/RC:ND");
 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:"2005/09/19");
 script_set_attribute(attribute:"vuln_publication_date", value:"2005/08/12");

 script_set_attribute(attribute:"plugin_type", value:"remote");
 script_end_attributes();
 
 script_category(ACT_GATHER_INFO);
 
 script_copyright(english:"This script is Copyright (C) 2005-2020 Tenable Network Security, Inc.");
 script_family(english:"CGI abuses");

 script_dependencie("http_version.nasl");
 script_require_ports("Services/www", 80);
 script_exclude_keys("Settings/disable_cgi_scanning");
 script_require_keys("www/PHP");
 exit(0);
}

#
# The script code starts here
#

include("http_func.inc");
include("http_keepalive.inc");
include("global_settings.inc");
include("misc_func.inc");

global_var port;

port = get_http_port(default:80, embedded:TRUE);
if ( ! can_host_php(port:port) ) exit(0);

function check(loc)
{
 local_var r, req;

 req = http_get(item:string(loc, "/index.php"), port:port);
 r = http_keepalive_send_recv(port:port, data:req, bodyonly:1);
 if( isnull(r) )exit(1, "The web server on port "+port+" failed to respond.");
 if (("powered by Discuz!</title>" >< r) && egrep(pattern:'<meta name="description" content=.+Powered by Discuz! Board ([1-3]|4\\.0\\.0RC[0-4])', string:r))
 {
   security_warning(port);
   exit(0);
 }
}

if (thorough_tests) dirs = list_uniq(make_list("/discuz", cgi_dirs()));
else dirs = make_list(cgi_dirs());

foreach dir (dirs)
{
 check(loc:dir);
}