Apache Struts 2.0.x < 2.2.1 Security Bypass Vulnerability (S2-003)

2018-09-10T00:00:00
ID STRUTS_2_0_12.NASL
Type nessus
Reporter This script is Copyright (C) 2018-2020 and is owned by Tenable, Inc. or an Affiliate thereof.
Modified 2018-09-10T00:00:00

Description

The version of Apache Struts running on the remote host is 2.0.x prior to 2.2.1. It is, therefore, affected by a security bypass vulnerability in ParameterInterceptor due to improper validation of user-supplied input data. A remote, unauthenticated attacker can exploit this, to manipulate server side context objects.

Note that Nessus has not tested for these issues but has instead relied only on the application's self-reported version number.

                                        
                                            #
# (C) Tenable Network Security, Inc.
#

include('compat.inc');

if (description)
{
  script_id(117390);
  script_version("1.5");
  script_set_attribute(attribute:"plugin_modification_date", value:"2020/09/25");

  script_name(english:"Apache Struts 2.0.x < 2.2.1 Security Bypass Vulnerability (S2-003)");

  script_set_attribute(attribute:"synopsis", value:
"A web application running on the remote host uses a Java framework that is affected by a security bypass
vulnerability.");
  script_set_attribute(attribute:"description", value:
"The version of Apache Struts running on the remote host is 2.0.x prior to 2.2.1. It is, therefore, affected by a 
security bypass vulnerability in ParameterInterceptor due to improper validation of user-supplied input data. A remote,
unauthenticated attacker can exploit this, to manipulate server side context objects.

Note that Nessus has not tested for these issues but has instead relied only on the application's self-reported version
number.");
  # https://cwiki.apache.org/confluence/display/WW/S2-003
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?76f5095d");
  script_set_attribute(attribute:"solution", value:
"Upgrade to Apache Struts version 2.2.1 or later");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H");
  script_set_attribute(attribute:"cvss_score_source", value:"manual");
  script_set_attribute(attribute:"cvss_score_rationale", value:"OGNL execution");

  script_set_attribute(attribute:"vuln_publication_date", value:"2008/06/22");
  script_set_attribute(attribute:"patch_publication_date", value:"2007/06/22");
  script_set_attribute(attribute:"plugin_publication_date", value:"2018/09/10");

  script_set_attribute(attribute:"agent", value:"all");
  script_set_attribute(attribute:"plugin_type", value:"combined");
  script_set_attribute(attribute:"cpe", value:"cpe:/a:apache:struts");
  
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Misc.");

  script_copyright(english:"This script is Copyright (C) 2018-2020 and is owned by Tenable, Inc. or an Affiliate thereof.");

  script_dependencies("os_fingerprint.nasl", "struts_detect_win.nbin", "struts_detect_nix.nbin", "struts_config_browser_detect.nbin");
  script_require_ports("installed_sw/Apache Struts","installed_sw/Struts");

  exit(0);
}

include('vcf.inc');

app_info = vcf::combined_get_app_info(app:'Apache Struts');

vcf::check_granularity(app_info:app_info, sig_segments:3);

constraints = [
  { 'min_version' : '2.0.0', 'max_version' : '2.1.8.1', 'fixed_version' : '2.2.1' }
];

vcf::check_version_and_report(app_info:app_info, constraints:constraints, severity:SECURITY_HOLE);