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…
Digg this Gi kudos!
2 tilbakemeldinger til nå ↓
1
olekvi
// 20. september 2008 kl 21:19
Det er vel ganske lenge siden det var sett på som spesielt smart å stole på “magic quotes”?
Fra PHP-manualen; This feature has been DEPRECATED and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
(og det har stått noe tilsvarende lenge
2
Knut-Olav
// 20. september 2008 kl 22:32
olekvi: Ja, har fått med meg det, men PHP 6 er fortsatt ikke like rundt hjørnet og denne opsjonen er faktisk satt på som standard i noen installasjoner av PHP.
Det gir en falsk trygghet, og da foretrekker jeg heller å møte den harde veggen med en gang istedenfor å bli slått i trynet gjentatte ganger når jeg minst aner det.
Når det gjelder PHP 6 skal nok det bli en fryd å programmere mot (vel, mindre smertefullt), men gud vet hvor mange prosjekter som kommer til å havne i kompatibilitetshelvete av den grunn. WordPress, for eksempel, insisterer på å støtte historiske versjoner av PHP, noe jeg smertelig har erfart i form av bugs og stygg kode!
Legg igjen en kommentar