Lucene search
+L

Red Hat JBoss Enterprise Application Platform (EAP) Detection (HTTP)

🗓️ 09 Dec 2016 00:00:00Reported by Copyright (C) 2016 Greenbone AGType 
openvas
 openvas
🔗 plugins.openvas.org👁 19 Views

Red Hat JBoss EAP HTTP Detectio

Refs
Code
# SPDX-FileCopyrightText: 2016 Greenbone AG
# Some text descriptions might be excerpted from (a) referenced
# source(s), and are Copyright (C) by the respective right holder(s).
#
# SPDX-License-Identifier: GPL-2.0-only

if(description)
{
  script_oid("1.3.6.1.4.1.25623.1.0.810306");
  script_version("2026-05-08T06:16:21+0000");
  script_tag(name:"cvss_base", value:"0.0");
  script_tag(name:"cvss_base_vector", value:"AV:N/AC:L/Au:N/C:N/I:N/A:N");
  script_tag(name:"last_modification", value:"2026-05-08 06:16:21 +0000 (Fri, 08 May 2026)");
  script_tag(name:"creation_date", value:"2016-12-09 12:11:43 +0530 (Fri, 09 Dec 2016)");
  script_name("Red Hat JBoss Enterprise Application Platform (EAP) Detection (HTTP)");
  script_category(ACT_GATHER_INFO);
  script_copyright("Copyright (C) 2016 Greenbone AG");
  script_family("Product detection");
  script_dependencies("find_service.nasl", "httpver.nasl", "global_settings.nasl");
  script_require_ports("Services/www", 443);
  script_exclude_keys("Settings/disable_cgi_scanning");

  script_xref(name:"URL", value:"https://developers.redhat.com/products/eap/overview");

  script_tag(name:"summary", value:"HTTP based detection of the Red Hat JBoss Enterprise Application
  Platform (EAP).");

  script_tag(name:"qod_type", value:"remote_banner");

  exit(0);
}

include("http_func.inc");
include("http_keepalive.inc");
include("port_service_func.inc");
include("cpe.inc");
include("host_details.inc");
include("version_func.inc");

port = http_get_port(default:443);
banner = http_get_remote_headers(port:port);

url1 = "/";
res1 = http_get_cache(item:url1, port:port);

url2 = "/noredirect.html";
res2 = http_get_cache(item:url2, port:port);

detection_patterns = make_list(
  "^\s*<h3>Your Red Hat JBoss Enterprise Application Platform is running\.</h3>",
  # Server: JBoss-EAP/7
  "^[Ss]erver\s*:\s*JBoss-EAP",
  # On "/":
  # <title>JBoss EAP 7</title>
  # <title>Welcome to JBoss EAP 7</title>
  "^\s*<title>(Welcome to )?JBoss EAP[^<]*</title>",
  # on "/noredirect":
  # <title>JBoss EAP 7 - Console Redirect Unavailable</title>
  "^\s*<title>(Welcome to )?JBoss EAP[^<]*- Console Redirect Unavailable</title>",
  # <title>EAP 6</title>
  "^\s*<title>EAP [0-9.]+</title>",
  # <h1>Welcome to JBoss EAP 7</h1>
  # <h1>Welcome to JBoss EAP 6</h1>
  "^\s*<h1>Welcome to JBoss EAP[^<]*</h1>",
  # on "/noredirect":
  # <p>To access the Administration console you should contact the administrator responsible for this
  #    JBoss EAP installation and ask them to provide you with the correct address.</p>
  "JBoss EAP installation and ask them to provide you with the correct address\.");

found = 0;
concluded = ""; # nb: To make openvas-nasl-lint happy...
conclUrl = ""; # nb: To make openvas-nasl-lint happy...

foreach pattern(detection_patterns) {

  if("^[Ss]erver" >< pattern) {
    concl = egrep(string:banner, pattern:pattern, icase:FALSE);
    _conclUrl = "  " + http_report_vuln_url(port:port, url:url1, url_only:TRUE);
  } else if("JBoss EAP installation" >< pattern || "Console Redirect Unavailable" >< pattern) {
    _conclUrl = "  " + http_report_vuln_url(port:port, url:url2, url_only:TRUE);
    concl = egrep(string:res2, pattern:pattern, icase:FALSE);
  } else {
    concl = egrep(string:res1, pattern:pattern, icase:FALSE);
    _conclUrl = "  " + http_report_vuln_url(port:port, url:url1, url_only:TRUE);
  }

  if(concl) {
    if(concluded)
      concluded += '\n';

    # nb: Minor formatting change for the reporting.
    concl = chomp(concl);
    concl = ereg_replace(string:concl, pattern:"^(\s+)", replace:"");
    concluded += "  " + concl;

    if(!egrep(string:conclUrl, pattern:_conclUrl + "$", icase:FALSE)) {
      if(conclUrl)
        conclUrl += '\n';

      conclUrl += _conclUrl;
    }

    found++;
  }
}

if(found > 0) {

  install = "/";
  version = "unknown";

  vers = eregmatch(pattern:"Server\s*:\s*JBoss-EAP/([0-9.]+)", string:concluded, icase:FALSE);
  if(vers[1])
    version = vers[1];

  if(version == "unknown") {

    vers = eregmatch(pattern:"<title>(Welcome to )?JBoss EAP ([0-9.]+)[^<]*</title>", string:concluded, icase:FALSE);
    if(vers[2])
      version = vers[2];
  }

  if(version == "unknown") {

    vers = eregmatch(pattern:"<h1>Welcome to JBoss EAP ([0-9.]+)[^<]*</h1>", string:concluded, icase:FALSE);
    if(vers[1])
      version = vers[1];
  }

  if(version == "unknown") {

    vers = eregmatch(pattern:"<title>EAP ([0-9.]+)[^<]*</title>", string:concluded, icase:FALSE);
    if(vers[1])
      version = vers[1];
  }

  # nb: Some additional "fingerprinting" from an error page which was previously done in
  # gb_red_hat_jboss_http_detect.nasl for EAP but got moved here.
  url = "/vt-test-non-existent.html";
  res = http_get_cache(item:url, port:port, fetch404:TRUE);
  if(res && res =~ "^HTTP/1\.[01] 404") {

    # nb: Pattern have been taken from EAP installations in the past. We might want to extend
    # and/or verify these again in the future.
    errorPatterns = make_array("JBoss Web/7\.2\.0\.Final-redhat-1", "6.1",
                               "JBoss Web/7\.2\.2\.Final-redhat-1", "6.2",
                               "JBoss Web/7\.4\.8\.Final-redhat-4", "6.3",
                               "JBoss Web/7\.5\.7\.Final-redhat-1", "6.4");

    res = http_extract_body_from_response(data:res);
    foreach errorPattern(keys(errorPatterns)) {
      if(found = eregmatch(string:res, pattern:errorPattern, icase:FALSE)) {
        concluded += '\n  ' + found[0];
        conclUrl  += '\n  ' + http_report_vuln_url(port:port, url:url, url_only:TRUE);

        tmpVers = errorPatterns[errorPattern];

        if(version == "unknown" || version_is_greater(version:tmpVers, test_version:version))
          version = tmpVers;

        break;
      }
    }
  }

  set_kb_item(name:"redhat/jboss/eap/detected", value:TRUE);
  set_kb_item(name:"redhat/jboss/eap/http/detected", value:TRUE);
  set_kb_item(name:"redhat/jboss/prds/detected", value:TRUE);
  set_kb_item(name:"redhat/jboss/prds/http/detected", value:TRUE);

  # nb: Just a generic KB one for the consolidation as this currently used a few additional other
  # detections as well.
  set_kb_item(name:"uses/redhat/undertow", value:TRUE);

  cpe = build_cpe(value:version, exp:"^([0-9.]+)", base:"cpe:/a:redhat:jboss_enterprise_application_platform:");
  if(!cpe)
    cpe = "cpe:/a:redhat:jboss_enterprise_application_platform";

  register_product(cpe:cpe, location:install, port:port, service:"www");

  log_message(data:build_detection_report(app:"Red Hat Enterprise Application Platform (EAP)",
                                          version:version,
                                          install:install,
                                          cpe:cpe,
                                          concludedUrl:conclUrl,
                                          concluded:concluded),
              port:port);
}

exit(0);

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