In a default installation of Oracle 9iAS, it is possible to
access SOAP documentation. These files might be useful for an attacker
to determine what application server is being used.
# OpenVAS Vulnerability Test
# $Id: oracle9i_soapdocs.nasl 8023 2017-12-07 08:36:26Z teissa $
# Description: Oracle 9iAS access to SOAP documentation
#
# Authors:
# Javier Fernandez-Sanguino <[email protected]>
#
# Copyright:
# Copyright (C) 2003 Javier Fernandez-Sanguino
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2,
# as published by the Free Software Foundation
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
tag_summary = "In a default installation of Oracle 9iAS, it is possible to
access SOAP documentation. These files might be useful for an attacker
to determine what application server is being used.";
tag_solution = "Remove the 'soapdocs' alias from the Oracle 9iAS http.conf:
Alias /soapdocs/ $ORACLE_HOME/soap/docs/
Note that the default installation of Oracle 9iAS 1.0.2.2 does not
seem to suffer this issue.
More information:
http://otn.oracle.com/deploy/security/pdf/ias_soap_alert.pdf
http://www.cert.org/advisories/CA-2002-08.html
Also read:
Hackproofing Oracle Application Server from NGSSoftware:
available at http://www.nextgenss.com/papers/hpoas.pdf";
if(description)
{
script_id(11223);
script_version("$Revision: 8023 $");
script_tag(name:"last_modification", value:"$Date: 2017-12-07 09:36:26 +0100 (Thu, 07 Dec 2017) $");
script_tag(name:"creation_date", value:"2005-11-03 14:08:04 +0100 (Thu, 03 Nov 2005)");
script_tag(name:"cvss_base", value:"5.0");
script_tag(name:"cvss_base_vector", value:"AV:N/AC:L/Au:N/C:P/I:N/A:N");
name = "Oracle 9iAS access to SOAP documentation";
script_name(name);
script_category(ACT_GATHER_INFO);
script_tag(name:"qod_type", value:"remote_vul");
script_copyright("This script is Copyright (C) 2003 Javier Fernandez-Sanguino");
family = "Web application abuses";
script_family(family);
script_dependencies("find_service.nasl", "http_version.nasl");
script_require_ports("Services/www", 80);
script_require_keys("www/OracleApache");
script_tag(name : "solution" , value : tag_solution);
script_tag(name : "summary" , value : tag_summary);
exit(0);
}
# Check starts here
include("http_func.inc");
include("http_keepalive.inc");
port = get_http_port(default:80);
banner = get_http_banner(port:port);
if ("Oracle" >!< banner)
exit (0);
if(get_port_state(port))
{
# Somebody needs to parse the Oracle documentation and put more files in
# these are just some examples out there.
document[0]="ReleaseNotes.html";
document[1]="docs/apiDocs/packages.html";
document[2]="docs/apiDocs/org.apache.soap.util.xml.XMISerializer.html";
# This one is too big to be retrieved
# document[X]="docs/apiDocs/AllNames.html";
for ( i=0; document[i]; i = i + 1 ) {
req = http_get(item:string("/soapdocs/", document[i]), port:port);
r = http_keepalive_send_recv(port:port, data:req, bodyonly:1);
if ( r == NULL ) exit(0);
if ( "SOAP" >< r || "Index of" >< r || "Package Index" >< r || "Generated by javadoc" >< r )
security_message(port, data:string("The documentation file /soapdocs/",document[i]," can be retrieved remotely:\n", r));
} # of the for loop
# TODO:
# this should also check for some information in the documentation and retrieve the precise version.
# Sample:
# ReleasesNotes.html has <center>iAS v1.X.X.X</center> which indicates the Oracle iAS version
}