Teknologi

Slik lurer man PHP Magic Quotes

20. september 2008 · 2 Kommentar

Det er fredag kveld, jeg sitter hos en kamerat og progger litt Perl. Så begynte vi å titte litt på hvilke Firefox plugins vi kjørte og fant ut at vi begge hadde Firebug, Web Developer og Download Statusbar. Videre har jeg også en Firefox plugin som heter XSS Me.

Da bestemte jeg meg for å teste Perl-applikasjonen min for sikkerhetshull. Denne applikasjonen er svært enkel. Den har ett HTML-skjema med ett input-felt, og data fra dette feltet blir listet ut på forsiden. “Shout” heter det, enkelt og greit. Jeg fyrte avgårde alle testene i XSS Me mot dette skjemaet og fikk ørten sikkerhetsvarslinger i retur. Dette løste jeg riktignok med en enkel pipe igjennom html-filteret til Template Toolkit.

Vi utforsket dette videre. Kameraten min smalt opp et lite PHP-script som tok innholdet fra et textarea-felt og viste det uendret ut på HTML-sida. Vi fant fort ut at PHP gjorde noe magisk bak scenen, som PHP så gjerne ofte gjør; magic quotes heter det. Men jeg lurte jæveln…


<script>
 window.location=String.fromCharCode(104)
  + String.fromCharCode(116)
  + String.fromCharCode(116)
  + String.fromCharCode(112)
  + String.fromCharCode(58)
  + String.fromCharCode(47)
  + String.fromCharCode(47)
  + String.fromCharCode(103)
  + String.fromCharCode(111)
  + String.fromCharCode(111)
  + String.fromCharCode(103)
  + String.fromCharCode(108)
  + String.fromCharCode(101)
  + String.fromCharCode(46)
  + String.fromCharCode(99)
  + String.fromCharCode(111)
  + String.fromCharCode(109);
</script>

Denne koden dekoder tallene til tegn, setter dem sammen til en tekststreng, tilordner tekststrengen til “document.location”. Javascriptet sender deg så videre til en ny nettside, rett og slett til http://google.com.

Ironisk nok klarte jeg å redirecte meg selv til google da jeg skulle ta en titt på preview’n på dette innlegget. Glemte visst å enkode HTML-taggene, tenke seg det…