Ethical Hacking

Learn to find vulnerabilities before the bad guys do! Gain real world hands on hacking experience in our state of the art hacking lab. Course designed and taught by expert instructors with years of penetration testing experience. 12 student maximum in every class. Certification attempt included in every package.
Computer Forensics Training at InfoSec Institute

Gain the in-demand skills of a certified computer examiner, learn to recover trace data left behind by fraud, theft, and cybercrime perpetrators. Discover the source of computer crime and abuse at your organization so that it never happens again. All of our class sizes are guaranteed to be 12 students or less to facilitate one-on-one interaction with one of our expert instructors.




Network Security VulnWatch
[Top] [All Lists]

SAP DB Web Server Stack Overflow

Subject: SAP DB Web Server Stack Overflow
Date: Thu, 05 Jul 2007 16:55:11 +0100
=======
Summary
=======
Name: SAP DB Web Server Stack Overflow
Release Date:  5 July 2007
Reference: NGS00486
Discover: Mark Litchfield <mark@ngssoftware.com>
Vendor: SAP
Vendor Reference: SECRES-291
Systems Affected: All Versions
Risk: Critical
Status: Fixed

========
TimeLine
========
Discovered:  3 January 2007
Released: 19 January 2007
Approved: 29 January 2007
Reported: 11 January 2007
Fixed: 27 March 2007
Published:

===========
Description
===========
SAP DB is an open source database server sponsored by SAP AG that provides
a series of web tools to administer database servers via web browsers.
These tools can be integrated into third-party web servers such as IIS, or
run on its own web server which by default is installed to TCP Port 9999.

When installed as its own web server, the process waHTTP.exe is found to
be listening on TCP Port 9999.

=================
Technical Details
=================
http://target:9999/webdbm?Event=DBM_INTERN_TEST&Action=REFRESH

Looking at the 200 response we can determine the function offered by the
request:

******************************************

<body topmargin=0 leftmargin=0 marginwidth=0 marginheight=0
background=/WARoot/Images/tatami.gif>
<a href="javascript:parent.GotoWebDBMURL(this,
'Event=DBM_INTERN_TEST&Action=REFRESH')">Test</a><table
style="font-family:courier new,monospace; font-size:8pt;" border=1
cellspacing=0 cellpadding=1>
<tr><td>sapdbwa_GetRequestURI&nbsp;</td><td>/webdbm&nbsp;</td></tr>
<tr><td>sapdbwa_GetIfModifiedSince&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>sapdbwa_GetQueryString&nbsp;</td><td>Event=DBM_INTERN_TEST&Action=REFRESH&nbsp;</td></tr>
<tr><td>sapdbwa_GetPathInfo&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>sapdbwa_GetMethod&nbsp;</td><td>GET&nbsp;</td></tr>
<tr><td>sapdbwa_GetContentType&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>sapdbwa_GetContentLength&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>sapdbwa_GetPathTranslated&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>sapdbwa_GetServerName&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>AUTH_TYPE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>CONTENT_LENGTH&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>CONTENT_TYPE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>GATEWAY_INTERFACE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_ACCEPT&nbsp;</td><td>*/*&nbsp;</td></tr>
<tr><td>PATH_INFO&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>QUERY_STRING&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>REMOTE_ADDR&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>REMOTE_HOST&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>REMOTE_USER&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>REQUEST_METHOD&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>SCRIPT_NAME&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>SERVER_NAME&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>SERVER_PORT&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>SERVER_PROTOCOL&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>SERVER_SOFTWARE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_ACCEPT&nbsp;</td><td>*/*&nbsp;</td></tr>
<tr><td>HTTP_ACCEPT_CHARSET&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_ACCEPT_ENCODING&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_ACCEPT_LANGUAGE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_ACCEPT_RANGES&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_AGE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_ALLOW&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_AUTHORIZATION&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_CACHE_CONTROL&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_CONNECTION&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_CONTENT_ENCODING&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_CONTENT_LANGUAGE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_CONTENT_LENGTH&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_CONTENT_LOCATION&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_CONTENT_MD5&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_CONTENT_RANGE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_CONTENT_TYPE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_DATE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_ETAG&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_EXPECT&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_EXPIRES&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_FROM&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_HOST&nbsp;</td><td>localhost&nbsp;</td></tr>
<tr><td>HTTP_IF_MATCH&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_IF_MODIFIED_SINCE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_IF_NONE_MATCH&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_IF_RANGE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_IF_UNMODIFIED_SINCE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_LAST_MODIFIED&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_LOCATION&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_MAX_FORWARDS&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_PRAGMA&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_PROXY_AUTHENTICATE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_PROXY_AUTHORIZATION&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_RANGE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_REFERER&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_RETRY_AFTER&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_SERVER&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_TE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_TRAILER&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_TRANSFER_ENCODING&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_UPGRADE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_USER_AGENT&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_VARY&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_VIA&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_WARNING&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_WWW_AUTHENTICATE&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>HTTP_COOKIE&nbsp;</td><td>SID=E63A7F73B20A5021442BAF3C8F70B97A&nbsp;</td></tr>
<tr><td>HTTP_SESSION_ID&nbsp;</td><td>NULL&nbsp;</td></tr>
<tr><td>Event&nbsp;</td><td>DBM_INTERN_TEST&nbsp;</td></tr>
<tr><td>Action&nbsp;</td><td>REFRESH&nbsp;</td></tr>
</table>
</body>

******************************************************

By making the request again, but ammeding the Cookie Value, or if one is
not prersent, simply add it as an HTTP header request, we can cause a
stack based overflow within WAHTTP.exe

The same Overflow can also be achieved in numerous other fields.

If we take the sapdbwa_GetQueryString, we can simply pass an additional
parameter by  appending & + string

===============
Fix Information
===============
Please ensure you are running the latest version

NGSSoftware Insight Security Research
http://www.ngssoftware.com/
http://www.databasesecurity.com/
http://www.nextgenss.com/
+44(0)208 401 0070


<Prev in Thread] Current Thread [Next in Thread>
  • SAP DB Web Server Stack Overflow, NGSSoftware Insight Security Research <=