Lucene search
+L

Liferay Portal Default Credentials

🗓️ 22 May 2012 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 195 Views

The remote Liferay Portal can be accessed using default credentials, granting administrative control and unauthorized access to the application server

Code
#%NASL_MIN_LEVEL 70300
#
# (C) Tenable Network Security, Inc.
#

include('deprecated_nasl_level.inc');
include('compat.inc');

if (description)
{
  script_id(59229);
  script_version("1.9");
  script_set_attribute(attribute:"plugin_modification_date", value:"2024/06/05");

  script_name(english:"Liferay Portal Default Credentials");

  script_set_attribute(attribute:"synopsis", value:
"The remote web application server uses default credentials.");
  script_set_attribute(attribute:"description", value:
"It is possible to log into the remote Liferay Portal by providing
default credentials.  Knowing these, an attacker can gain administrative
control of the affected application server and, for example, install
hostile plugins.");
  script_set_attribute(attribute:"solution", value:
"Change the credentials.");
  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:H/RL:ND/RC:ND");

  script_set_attribute(attribute:"plugin_publication_date", value:"2012/05/22");

  script_set_attribute(attribute:"plugin_type", value:"remote");
  script_set_attribute(attribute:"cpe", value:"cpe:/a:liferay:portal");
  script_set_attribute(attribute:"default_account", value:"true");
  script_set_attribute(attribute:"thorough_tests", value:"true");
  script_set_attribute(attribute:"enable_cgi_scanning", value:"true");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"CGI abuses");

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

  script_dependencies("liferay_detect.nasl");
  script_require_keys("www/liferay_portal");
  script_exclude_keys("Settings/disable_cgi_scanning", "global_settings/supplied_logins_only");
  script_require_ports("Services/www", 80, 443, 8080);

  exit(0);
}

include("audit.inc");
include("global_settings.inc");
include("http.inc");
include("misc_func.inc");
include("webapp_func.inc");

# Get the ports that webservers have been found on, defaulting to
# what Liferay uses with Tomcat, their recommended bundle.
port = get_http_port(default:8080);

# Get details of the Liferay Portal install.
install = get_install_from_kb(appname:"liferay_portal", port:port, exit_on_fail:TRUE);

if (supplied_logins_only) audit(AUDIT_SUPPLIED_LOGINS_ONLY);

dir = install["dir"];
version = install["ver"];
url = build_url(port:port, qs:dir + "/");

# Access the login page of the portal so we can get a cookie for a
# session. The number 58 cannot be changed.
url =
  "/web/guest/home" +
  "?p_auth=LHFP8z37" +
  "&p_p_id=58" +
  "&p_p_lifecycle=1" +
  "&p_p_state=maximized" +
  "&p_p_mode=view" +
  "&_58_struts_action=/login/login";

res = http_send_recv3(
  port            : port,
  method          : "GET",
  item            : url,
  exit_on_fail    : TRUE
);

# Parse the Set-Cookie headers from the HTTP response headers. Liferay
# gives clients three cookies.
regex = "^Set-Cookie: ([^;]+);";
matches = egrep(string:res[1], pattern:regex);
if (!matches) exit(1, "Failed to find Set-Cookie header in HTTP response from port " + port + ".");

# Parse the cookies from the Set-Cookie header.
cookies = make_list();
foreach match (split(matches, keep:FALSE))
{
  fields = eregmatch(string:match, pattern:regex);
  if (!isnull(fields)) cookies = make_list(cookies, fields[1]);
}

cookie = join(cookies, sep:"; ");
if (cookie == "") exit(1, "Failed to parse values from Set-Cookie headers.");

# These are the default credentials, and are known to work for 6.0.5 /
# 6.0.6. Later versions require you to change the password on first
# login.
user = "[email protected]";
pass = "test";

# Attempt to log in with default credentials.
res = http_send_recv3(
  port            : port,
  method          : "POST",
  item            : url,
  add_headers     : make_array("Cookie", cookie, "Content-Type", "application/x-www-form-urlencoded"),
  data            : "_58_login=" + user + "&_58_password=" + pass,
  follow_redirect : 3,
  exit_on_fail    : TRUE
);

# Check returned page to see if we're actually logged in.
if (res[2] !~ '<a *href *= *"/c/portal/logout" *> *Sign *Out')
  audit(AUDIT_WEB_APP_NOT_AFFECTED, "Liferay Portal", url);

# Report our findings.
report = NULL;
if (report_verbosity > 0)
{
  header = 'Nessus was able to gain access using the following URL';
  trailer =
    'and the following set of credentials :' +
    '\n' +
    '\n  Username : ' + user +
    '\n  Password : ' + pass +
    '\n';

  report = get_vuln_report(items:url, port:port, header:header, trailer:trailer);
}

security_hole(port:port, extra:report);

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

05 Jun 2024 00:00Current
5.6Medium risk
Vulners AI Score5.6
195