Vulnerabilities > CVE-2005-2108 - SQL-Injection vulnerability in WordPress

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
wordpress
nessus
exploit available

Summary

SQL injection vulnerability in XMLRPC server in WordPress 1.5.1.2 and earlier allows remote attackers to execute arbitrary SQL commands via input that is not filtered in the HTTP_RAW_POST_DATA variable, which stores the data in an XML file.

Exploit-Db

descriptionWordpress <= 1.5.1.2 xmlrpc Interface SQL Injection Exploit. CVE-2005-2108. Webapps exploit for php platform
idEDB-ID:1077
last seen2016-01-31
modified2005-06-30
published2005-06-30
reporterJames Bercegay
sourcehttps://www.exploit-db.com/download/1077/
titleWordPress <= 1.5.1.2 - xmlrpc Interface SQL Injection Exploit

Nessus

  • NASL familyFreeBSD Local Security Checks
    NASL idFREEBSD_PKG_DCA0A345ED8111D983100001020EED82.NASL
    descriptionGulfTech Security Research reports : There are a number of vulnerabilities in WordPress that may allow an attacker to ultimately run arbitrary code on the vulnerable system. These vulnerabilities include SQL Injection, Cross Site Scripting, and also issues that may aid an attacker in social engineering.
    last seen2020-06-01
    modified2020-06-02
    plugin id19142
    published2005-07-13
    reporterThis script is Copyright (C) 2005-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/19142
    titleFreeBSD : wordpress -- multiple vulnerabilities (dca0a345-ed81-11d9-8310-0001020eed82)
    code
    #%NASL_MIN_LEVEL 80502
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were  
    # extracted from the FreeBSD VuXML database :
    #
    # Copyright 2003-2018 Jacques Vidrine and contributors
    #
    # Redistribution and use in source (VuXML) and 'compiled' forms (SGML,
    # HTML, PDF, PostScript, RTF and so forth) with or without modification,
    # are permitted provided that the following conditions are met:
    # 1. Redistributions of source code (VuXML) must retain the above
    #    copyright notice, this list of conditions and the following
    #    disclaimer as the first lines of this file unmodified.
    # 2. Redistributions in compiled form (transformed to other DTDs,
    #    published online in any format, converted to PDF, PostScript,
    #    RTF and other formats) must reproduce the above copyright
    #    notice, this list of conditions and the following disclaimer
    #    in the documentation and/or other materials provided with the
    #    distribution.
    # 
    # THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS"
    # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
    # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
    # OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
    # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
    # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
    # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION,
    # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(19142);
      script_version("1.16");
      script_cvs_date("Date: 2019/08/02 13:32:38");
    
      script_cve_id("CVE-2005-2107", "CVE-2005-2108", "CVE-2005-2109", "CVE-2005-2110");
    
      script_name(english:"FreeBSD : wordpress -- multiple vulnerabilities (dca0a345-ed81-11d9-8310-0001020eed82)");
      script_summary(english:"Checks for updated package in pkg_info output");
    
      script_set_attribute(
        attribute:"synopsis", 
        value:"The remote FreeBSD host is missing a security-related update."
      );
      script_set_attribute(
        attribute:"description", 
        value:
    "GulfTech Security Research reports :
    
    There are a number of vulnerabilities in WordPress that may allow an
    attacker to ultimately run arbitrary code on the vulnerable system.
    These vulnerabilities include SQL Injection, Cross Site Scripting, and
    also issues that may aid an attacker in social engineering."
      );
      # http://marc.theaimsgroup.com/?l=bugtraq&m=112006967221438
      script_set_attribute(
        attribute:"see_also",
        value:"https://marc.info/?l=bugtraq&m=112006967221438"
      );
      # https://vuxml.freebsd.org/freebsd/dca0a345-ed81-11d9-8310-0001020eed82.html
      script_set_attribute(
        attribute:"see_also",
        value:"http://www.nessus.org/u?cb38334c"
      );
      script_set_attribute(attribute:"solution", value:"Update the affected package.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:freebsd:freebsd:wordpress");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:freebsd:freebsd");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2005/06/28");
      script_set_attribute(attribute:"patch_publication_date", value:"2005/07/05");
      script_set_attribute(attribute:"plugin_publication_date", value:"2005/07/13");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_copyright(english:"This script is Copyright (C) 2005-2019 and is owned by Tenable, Inc. or an Affiliate thereof.");
      script_family(english:"FreeBSD Local Security Checks");
    
      script_dependencies("ssh_get_info.nasl");
      script_require_keys("Host/local_checks_enabled", "Host/FreeBSD/release", "Host/FreeBSD/pkg_info");
    
      exit(0);
    }
    
    
    include("audit.inc");
    include("freebsd_package.inc");
    
    
    if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
    if (!get_kb_item("Host/FreeBSD/release")) audit(AUDIT_OS_NOT, "FreeBSD");
    if (!get_kb_item("Host/FreeBSD/pkg_info")) audit(AUDIT_PACKAGE_LIST_MISSING);
    
    
    flag = 0;
    
    if (pkg_test(save_report:TRUE, pkg:"wordpress<1.5.1.3,1")) flag++;
    
    if (flag)
    {
      if (report_verbosity > 0) security_hole(port:0, extra:pkg_report_get());
      else security_hole(0);
      exit(0);
    }
    else audit(AUDIT_HOST_NOT, "affected");
    
  • NASL familyCGI abuses
    NASL idWORDPRESS_1512.NASL
    descriptionThe version of WordPress installed on the remote host is affected by a SQL injection vulnerability because the bundled XML-RPC library fails to properly sanitize user-supplied input to the
    last seen2020-06-01
    modified2020-06-02
    plugin id18601
    published2005-07-01
    reporterThis script is Copyright (C) 2005-2018 Tenable Network Security, Inc.
    sourcehttps://www.tenable.com/plugins/nessus/18601
    titleWordPress < 1.5.1.3 XMLRPC SQL Injection
    code
    #
    # Tenable Network Security, Inc.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(18601);
      script_version("1.28");
      script_cvs_date("Date: 2018/08/15 16:35:42");
    
      script_cve_id("CVE-2005-2108");
      script_xref(name:"EDB-ID", value:"1077");
    
      script_name(english:"WordPress < 1.5.1.3 XMLRPC SQL Injection");
      script_summary(english:"Checks for SQL injection in xmlrpc.php.");
    
      script_set_attribute(attribute:"synopsis", value:
    "The remote web server contains a PHP application that is affected by a
    SQL injection vulnerability.");
      script_set_attribute(attribute:"description", value:
    "The version of WordPress installed on the remote host is affected by a
    SQL injection vulnerability because the bundled XML-RPC library fails
    to properly sanitize user-supplied input to the 'xmlrpc.php' script.
    An attacker can exploit this flaw to launch SQL injection attacks that
    could lead to disclosure of the administrator's password hash or
    attacks against the underlying database.
    
    Note that the application is reportedly also affected by multiple
    cross-site scripting (XSS) vulnerabilities, multiple path disclosure
    vulnerabilities, and a flaw in which a remote attacker can modify the
    content of the 'forgotten password' message; however, Nessus has not
    tested for these issues.");
      # http://web.archive.org/web/20051230035642/http://www.gulftech.org/?node=research&article_id=00085-06282005
      script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?8ec4b624");
      script_set_attribute(attribute:"solution", value:"Upgrade to WordPress version 1.5.1.3 or later.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P");
      script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
      script_set_attribute(attribute:"exploit_available", value:"true");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2005/06/29");
      script_set_attribute(attribute:"patch_publication_date", value:"2005/06/29");
      script_set_attribute(attribute:"plugin_publication_date", value:"2005/07/01");
    
      script_set_attribute(attribute:"plugin_type", value:"remote");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:wordpress:wordpress");
      script_end_attributes();
    
      script_category(ACT_ATTACK);
      script_family(english:"CGI abuses");
    
      script_copyright(english:"This script is Copyright (C) 2005-2018 Tenable Network Security, Inc.");
    
      script_dependencies("wordpress_detect.nasl");
      script_require_keys("installed_sw/WordPress", "www/PHP");
      script_require_ports("Services/www", 80);
    
      exit(0);
    }
    
    include("audit.inc");
    include("global_settings.inc");
    include("misc_func.inc");
    include("http.inc");
    include("install_func.inc");
    
    app = "WordPress";
    get_install_count(app_name:app, exit_if_zero:TRUE);
    
    port = get_http_port(default:80, php:TRUE);
    
    install = get_single_install(
      app_name : app,
      port     : port
    );
    
    dir = install['path'];
    install_url = build_url(port:port, qs:dir);
    
    # Check whether the script exists.
    r = http_send_recv3(method: "GET", item:dir + "/xmlrpc.php", port:port, exit_on_fail: TRUE);
    
    # If it does...
    if ("XML-RPC server accepts POST requests only" >< r[2])
    {
      # Find an existing post.
      res = http_send_recv3(method : "GET", item:dir + "/index.php", port:port, exit_on_fail: TRUE);
    
      pat = '/\\?p=([0-9]+)" rel="bookmark"';
      matches = egrep(pattern:pat, string:res);
      if (matches)
      {
        foreach match (split(matches))
        {
          match = chomp(match);
          post = eregmatch(pattern:pat, string:match);
          if (!isnull(post))
          {
            post = post[1];
            # We're only interested in the first post we find.
            break;
          }
        }
      }
    
      # If we have a post, try to exploit the flaw.
      if (post)
      {
        postdata =
          '<?xml version="1.0"?>' +
          "<methodCall>" +
            "<methodName>pingback.ping</methodName>" +
              "<params>" +
                # nb: we can only determine success based on whether any
                #     rows were returned. The exploit used here, while
                #     lame, is certain to return one.
                # nb^2: this only works if the MySQL version supports
                #       UNION (ie, >= 4.0).
                "<param><value><string>" +SCRIPT_NAME+ "' UNION SELECT 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1--</string></value></param>" +
                "<param><value><string>http://" +get_host_name()+ dir + "/?p=" +post+ "#1</string></value></param>" +
                "<param><value><string>admin</string></value></param>" +
              "</params>" +
            "</methodCall>";
        r = http_send_recv3(method: "POST", item: dir+"/xmlrpc.php", version: 11, port: port, exit_on_fail: TRUE, content_type: "text/xml", data: postdata);
    
        # There's a problem if we see "The pingback has already been registered".
        if ("The pingback has already been registered" >< r[2])
        {
          security_hole(port);
          set_kb_item(name: 'www/'+port+'/SQLInjection', value: TRUE);
          security_hole(port);
          exit(0);
        }
      }
    }
    audit(AUDIT_WEB_APP_NOT_AFFECTED, app, install_url);