xss na mapy.(seznam).cz

Včera (9.6.2007) jsem úplnou náhodou potřeboval najít trasu mezi dvěma městy. Jelikož jsem línej, nechal jsem si poradit od Seznamu. Docela mě zarazilo, že dotaz

route(fast,toll):praha>brno
obsahuje znak >. Jen z čiré zvědavosti (a pošramoceného ega, které utrpělo, když jsem se tenhle týden neúspěšně pokoušel XSSknout kamarádův web) jsem tedy zkusil do inputu vyhledávání zapsat:
route(fast,toll):praha<script>alert('xss')</script><script>alert('xss')</script>brno
Přestože kýžené okno nevyskočilo, nenechal jsem se odradit a zkusil štěstí jen s alert();. Okno se objevilo a bylo tedy jasné, že jediné, co mě dělí od nějaké té vychloubačné demonstrační hlášky je jen zapsání apostrofů. K tomu posloužil eval(String.fromCharCode(39)); K zobrazení okna tedy stačilo napsat pár řádek v Pythonu, které mi přeloží znaky mého řetězce do ASCII vyjadřeného desítkově, které se pomocí fce vykonají:
route(fast,toll):praha<script>eval(String.fromCharCode(97,108,101,114,116,40,39,
120,115,115,39,41))</script>brno
Stránka pak ukazovala nějaké debug hlášky parseru (které by jistě nebylo těžké pomocí js & DOM odstranit..), a proto jsem se rozhodl si trosku zalaškovat a nahodit klasickou černou obrazovku.. Výseledek můžete vidět tady. Jak je vidět, URL je příliš dlouhá, ale jistě by nebyl problém načíst pouze externí js soubor který by odtranil chybovou debug hlášku, zinicializoval AJAXový cookie logger, nebo další podobná zvěrstva...

PS. Chtěl bych upozornit, že na tuto chybu jsem dnes Seznam upozornil (kontaktním formulářem na mapy.cz, emaily na adresy admin@seznam.cz a admin@mapy.cz se mi vrátily jako nedoručené) a zárověň jsem tuto stránku (ano jsem hnidopych) poslal i redaktorům root.cz s prosbou o jednodenní náskok pro Seznam.

PPS. Pokud jste na tuto stránku již dorazili ex-post, tady je k dispozici archivační screenshot.

starenka 10.6.2007