Vulnerabilities > CVE-2009-4655 - Cryptographic Issues vulnerability in Novell Edirectory 8.8.5

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
novell
CWE-310
nessus
exploit available
metasploit

Summary

The dhost web service in Novell eDirectory 8.8.5 uses a predictable session cookie, which makes it easier for remote attackers to hijack sessions via a modified cookie.

Vulnerable Configurations

Part Description Count
Application
Novell
1

Common Weakness Enumeration (CWE)

Common Attack Pattern Enumeration and Classification (CAPEC)

  • Signature Spoofing by Key Recreation
    An attacker obtains an authoritative or reputable signer's private signature key by exploiting a cryptographic weakness in the signature algorithm or pseudorandom number generation and then uses this key to forge signatures from the original signer to mislead a victim into performing actions that benefit the attacker.

Exploit-Db

descriptionNovell eDirectory 8.8.5 DHost Weak Session Cookie Session Hijacking Vulnerability. CVE-2009-4655. Remote exploit for novell platform
idEDB-ID:33767
last seen2016-02-03
modified2010-03-14
published2010-03-14
reportermetasploit
sourcehttps://www.exploit-db.com/download/33767/
titleNovell eDirectory 8.8.5 DHost Weak Session Cookie Session Hijacking Vulnerability

Metasploit

descriptionThis module is able to predict the next session cookie value issued by the DHOST web service of Novell eDirectory 8.8.5. An attacker can run this module, wait until the real administrator logs in, then specify the predicted cookie value to hijack their session.
idMSF:AUXILIARY/ADMIN/EDIRECTORY/EDIRECTORY_DHOST_COOKIE
last seen2020-06-07
modified2018-07-09
published2009-11-13
referenceshttps://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-4655
reporterRapid7
sourcehttps://github.com/rapid7/metasploit-framework/blob/master//modules/auxiliary/admin/edirectory/edirectory_dhost_cookie.rb
titleNovell eDirectory DHOST Predictable Session Cookie

Nessus

NASL familyWeb Servers
NASL idEDIR_DHOST_PREDICTABLE_IDS.NASL
descriptionThe eDirectory DHost web server running on the remote host generates predictable session IDs. A remote attacker could exploit this by predicting the session ID of a legitimately logged-in user, which could lead to the hijacking of administrative sessions.
last seen2020-06-01
modified2020-06-02
plugin id45109
published2010-03-19
reporterThis script is Copyright (C) 2010-2018 Tenable Network Security, Inc.
sourcehttps://www.tenable.com/plugins/nessus/45109
titleNovell eDirectory DHost Predictable Session ID
code
#
# (C) Tenable Network Security, Inc.
#


include("compat.inc");


if (description)
{
  script_id(45109);
  script_version("1.9");
  script_cvs_date("Date: 2018/07/10 14:27:33");

  script_cve_id("CVE-2009-4655");
  script_bugtraq_id(38782);
  script_xref(name:"Secunia", value:"38808");

  script_name(english:"Novell eDirectory DHost Predictable Session ID");
  script_summary(english:"Tries to determine if the session ID is predictable");

  script_set_attribute(
    attribute:"synopsis",
    value:"The remote web server generates predictable session IDs."
  );
  script_set_attribute(
    attribute:"description",
    value:
"The eDirectory DHost web server running on the remote host generates
predictable session IDs.

A remote attacker could exploit this by predicting the session ID of
a legitimately logged-in user, which could lead to the hijacking of
administrative sessions."
  );
  script_set_attribute(
    attribute:"solution",
    value:"There is no known solution at this time."
  );
  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:U/RC:C");
  script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
  script_set_attribute(attribute:"exploit_available", value:"true");
script_cwe_id(310);
  script_set_attribute(attribute:"vuln_publication_date",value:"2009/11/13");
  script_set_attribute(attribute:"plugin_publication_date",value:"2010/03/19");
  script_set_attribute(attribute:"plugin_type", value:"remote");
  script_set_attribute(attribute:"cpe", value:"cpe:/a:novell:edirectory");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Web Servers");

  script_copyright(english:"This script is Copyright (C) 2010-2018 Tenable Network Security, Inc.");

  script_require_ports("Services/www", 80);
  script_dependencies("http_version.nasl");

  exit(0);
}


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


port = get_http_port(default:8030, embedded:TRUE);

# Make sure this server looks like dhost
if (report_verbosity < 2)
{
  banner = get_http_banner(port:port);

  if (isnull(banner))
    exit(1, 'Unable to get web server banner on port '+port+'.');
  if (!egrep(string:banner, pattern:'Server: DHost'))
    exit(0, 'The web server on port '+port+' does not appear to be DHost.');
}

num_reqs = 5;
url = '/dhost';
last_id = NULL;
ids = make_list();
deltas = make_list();
min_delta = NULL;

# Get a bunch of session IDs.
for (i = 0; i < num_reqs; i++)
{
  clear_cookiejar();
  res = http_send_recv3(
    method:"GET",
    item:url,
    port:port,
    exit_on_fail:TRUE
  );
  str_id = get_any_http_cookie(name:'DHAC1');
  if (isnull(str_id)) exit(1, "A session ID wasn't received on port "+port+".");

  ids = make_list(ids, str_id);
  id = getdword(blob:hex2raw(s:str_id), pos:0);

  # only start calculating deltas after the 2nd response
  if (!isnull(last_id)) deltas = make_list(deltas, id - last_id);

  last_id = id;
}

# Determine if the deltas are predictable. We can account for gaps (i.e. other
# people attempting to login during the scan) assuming we're able to get at
# least two consecutive IDs.
min_delta = NULL;

foreach delta (deltas)
{
  if (isnull(min_delta) || delta < min_delta)
    min_delta = delta;
}

foreach delta (deltas)
{
  if (delta % min_delta != 0)
    exit(0, 'The web server on port '+port+' is not affected.');
}

# If we made it this far without bailing out, the system is vulnerable.
if (report_verbosity > 0)
{
  report =
    '\nNessus made '+num_reqs+' requests for the following URL :\n\n'+
    '  '+build_url(qs:url, port:port)+'\n\n'+
    'and received the following session IDs :\n\n';

  foreach id (ids) report += '  '+id+'\n';

  hex_delta = '0x'+hexstr(dec2hex(num:min_delta));
  report += '\nDelta : '+hex_delta+'\n';
  security_hole(port:port, extra:report);
}
else security_hole(port);