2600 Australia

"Hack to learn, not learn to hack"



ichat - Analysis and Vulnerabilities by Pho

Please note that the article provided here is from our archives and will most likely be outdated. They are provided for reference purposes only, please do not take them to indicate the current state of technology. Note that any links contained within are also unlikely to work.

Introduction
Ichat is a versatile communications suite from koz.com. The Rooms 3.03a product in the suite allows IP network based realtime communication, somewhat like the IRC protocol (see the RFC above for more information). The client software is free, and runs either as a browser plugin or a java applet. There is also a plain HTML version, maintained on each site with Rooms. Unfortunately for some of us, the HTML version uses frames. On a tangent, the server costs money, and is pitched at 'online community managers' (source: ichat.com).

My initial analysis of Rooms was prompted by the success of the not-dissimilar newsirc exploration, however I soon discovered some interesting points. Here's how I did it.


The Method

The Vulnerability
The impersonation problem stems from the fact that the Ichat designers did not take in to account the insecurities built in to the underlying internet protocols. The key problem, namely that data that is sent across the network may be observed by a third party while in transit, is an old and often ignored example. Sad, isn't it?

By stealing another user's cookie ID (either by acting as their HTTP proxy server or by sniffing it from the network) you can effectively take over that person's position in iChat Rooms when they leave. Alternatively, you can freak them out by making them 'say' things that they never said. Retreiving the cookie from proxy logs or traffic-dumps is left as an exercise for the reader.


The Exploit
Dogcow wrote a perl script which will save you the hassle of telnetting to your target host. I have not tested it, bug him and not me :) The syntax is as follows:

./ichat-cookie.pl servername portnumber cgi-vars cookie-vars

Here it is (v0.9). You will need a unix machine to run it on (technically you don't, but if you know how to run it under NT or another OS, you shouldn't be reading the docs ;).

Disclaimer
This was created in a rush -- there are likely errors in it. Please inform us. Even if this is kinda useless, I hope someone learnt something from it. Cheers! Pho.