1 van 2

Casus: never trust user input

Geplaatst: za 17 okt 2009, 09:18
door Ger
In other news...
Honderden studenten hebben maandenlang bijna gratis pizza's kunnen bestellen via de website Justeat.nl.

(...)

"Zodra ze een bestelling plaatsen en de betaling regelen, verhuizen ze naar een andere pagina op de website en zetten ze de eindafrekening op een stuiver. Dat bedrag wordt vervolgens door de bank bij de besteller afgeschreven", aldus Groenendijk.

Anders dan hij eerder beweerde, ging het niet om een lek in betaaldienst iDeal, maar om een fout in de website van de bezorgdienst zelf.
Beetje nazoekwerk leert dat het bedrag simpelweg via een hidden inputfield werd doorgegeven. Sorry hoor, maar hoe slecht kan je code zijn? Door simpelweg de broncode van de HTML te kopieren, in een code-editor (of voor huis-tuin-en-keuken-oplichters: kladblok) te plakken, het bedrag aan te passen en vervolgens die zelfgemaakte pagina op te vragen en door te klikken naar bestellen ben je er al.

Ik kan er echt met mijn pet niet bij dat een webshop (want dat is JustEat: puur een webshop die voor allerlei bedrijven bestellingen regelt) zo'n brakke beveiliging heeft. Het bedrag mag natuurlijk NOOIT door de gebruiker aangeleverd worden, maar moet op basis van artikelnummers server sided opgevraagd worden, en dat bedrag stuur je dan naar iDeal.

Het is natuurlijk fout van de studenten in kwestie, maar van dezelfde orde als je fiets zonder slot naast de bushalte neerzetten...

Re: Casus: never trust user input

Geplaatst: za 17 okt 2009, 14:25
door jhnbk
Leuke beveiliging. Zolang online bankieren maar niet gekraakt wordt :eusa_whistle:

Re: Casus: never trust user input

Geplaatst: za 17 okt 2009, 18:01
door peterbill
Leuke beveiliging. Zolang online bankieren maar niet gekraakt wordt :eusa_whistle:


Je bedoelt het random reader systeem van de Rabobank? Is in principe al een hele lange tijd gedeeltelijk gekraakt, alleen banken willen dit natuurlijk stil houden, dus enig geld verlies door een "cracker" wordt per direct gecompenseerd door de Rabobank zelf. Het systeem werd al eerder gebruik bij Chinese bank(en) en was al, vóórdat het hier werd ingevoerd gekraakt. Niet dat het systeem identiek is, maar de basis wel.

Re: Casus: never trust user input

Geplaatst: za 17 okt 2009, 18:19
door DePurpereWolf
Heb je daar enige refernties voor peterbill?

Of is het gewoon stemmingmakerij.

Re: Casus: never trust user input

Geplaatst: za 17 okt 2009, 19:09
door peterbill
Heb geen referenties, maar iemand die ik (goed) ken heeft eraan meegewerkt en heeft mij dit verteld. Dus laat het maar onder het kopje stemmingmakerij. :eusa_whistle:

Re: Casus: never trust user input

Geplaatst: zo 18 okt 2009, 10:09
door Cycloon
Beetje nazoekwerk leert dat het bedrag simpelweg via een hidden inputfield werd doorgegeven. Sorry hoor, maar hoe slecht kan je code zijn? Door simpelweg de broncode van de HTML te kopieren, in een code-editor (of voor huis-tuin-en-keuken-oplichters: kladblok) te plakken, het bedrag aan te passen en vervolgens die zelfgemaakte pagina op te vragen en door te klikken naar bestellen ben je er al.


Het hoeft zelf niet zo moeilijk, enkel wat javascript runnen in je browser die het inputveldje een andere waarde geeft en je bent vertrokken (wordt wel vaker gedaan op websites waar bv inputvelden disabled zijn, om daar toch iets in te vullen).

Re: Casus: never trust user input

Geplaatst: zo 18 okt 2009, 12:59
door 317070
Het hoeft zelf niet zo moeilijk, enkel wat javascript runnen in je browser die het inputveldje een andere waarde geeft en je bent vertrokken (wordt wel vaker gedaan op websites waar bv inputvelden disabled zijn, om daar toch iets in te vullen).
Het gebeurt vaker hoor, ik heb laatst een methode gevonden om als gewone gebruiker de topic-eigenaar op het minervaforum (van de Ugent!) aan te passen. Vrij waardeloos, maar toch. En er was ook niet te lang geleden een hacker die gratis goederen bij de grote banken in België en Nederland kon kopen.

Websites mogen NIET userscripts vertrouwen, alles dat USER-side gebeurt is niet te vertrouwen. Maar veel ontwikkelaars hebben volgens mij niet helemaal door hoe alles precies in elkaar zit... Een user-side script is per definitie niet te vertrouwen, een server-side script moet alle input die van elders komt controleren. (Maar dat is dan weer slecht voor de server...)

Maar ik hoop dat ik ooit eens zo'n gratis pizza hackje vindt :eusa_whistle:

Re: Casus: never trust user input

Geplaatst: zo 18 okt 2009, 13:59
door Benm
Toch is het ook nog onbegrijpelijk dat het zo lang heeft geduurd voordat men erachter kwam. Betalingen van en paar cent zouden feitelijk al een alarmbel moeten doen afgaan... maar afgezien daarvan onstaat toch ook direct een fout op de balans? Of ze moeten die betalingen van een cent hebben uitgekeerd aan de restaurants, maar die zal zoiets toch zeker wel opvallen?

Ergens kan ik me voorstellen dat zo'n fout gemaakt wordt, maar het lijkt me ook een lek dat zeer eenvoudig is om te dichten: in de terugmelding die ideal doet naar je webserver zit ook het totaalbedrag, lijkt me geen probleem om dit te checken tegen het totaal van de bestelde producten.

Overigens denk ik niet dat die 'hackers' zo slim zijn, meer mazzel dat ze het uberhaupt probeerden - dit soort lekken lijkt me dusdanig zeldzaam dat het lang duurt voor je een site gevonden hebt waarop het echt werkt en nog iets vekoopt dat je wilt hebben ook...

Re: Casus: never trust user input

Geplaatst: zo 18 okt 2009, 14:23
door Ger
Het lijkt me eerder een kwestie van student bestelt regelmatig via Justeat. Besluit een keer de bron te checken, en denkt: Nee toch zeker, zo stom zullen ze toch niet zijn? Besluit de proef op de som te nemen en het werkt. Om vervolgens op grote schaal misbruik te maken.

Niet gestoeld op enige kennis overigens, maar dat lijkt me aannemelijker dan iemand die echt op zoek gaat. Want dan val je toch meer in de categorie hacker en een echte hacker gaat toch niet op zo'n manier te werk (want dit kun je nauwelijks hacken noemen).

Re: Casus: never trust user input

Geplaatst: zo 18 okt 2009, 14:34
door 317070
Niet gestoeld op enige kennis overigens, maar dat lijkt me aannemelijker dan iemand die echt op zoek gaat. Want dan val je toch meer in de categorie hacker en een echte hacker gaat toch niet op zo'n manier te werk (want dit kun je nauwelijks hacken noemen).
Crawling is the solution!

Het is niet (zo) moeilijk om een soort van bot te maken die allerhande inputvelden controleert of ze 'hackbaar' zijn. Een paar standaardtrucjes om bijvoorbeeld een SQL-hack te doen zijn eenvoudig na te gaan. Moeilijker is om buffer overflows na te gaan, maar dit is wel nog steeds automatiseerbaar. Van alle onbeveiligde velden en poorten die je bot dan vindt kun je eens nagaan welke je interessant vindt. (e.g. banksites,...)

Het is dus normaal gezien niet iemand, maar iets dat op zoek gaat, waarna iemand het kan uitbuiten...

Maar ik denk dat hier inderdaad anders gegaan is, overigens waren de mensen van de pizzasite al meer dan een jaar op de hoogte van die hack.

Re: Casus: never trust user input

Geplaatst: zo 18 okt 2009, 15:01
door Ger
Uit dat bericht:
Het is nog niet bekend waar het precies fout gaat.
Jaja. Half Nederland weet al dat het door dat hidden inputfield komt, en dat ze het simpelweg moeten aanpassen door het server sided af te handelen. Da's echt niet zo moeilijk in te bouwen hoor.

Re: Casus: never trust user input

Geplaatst: zo 18 okt 2009, 16:11
door Benm
Het lijkt me eerder een kwestie van student bestelt regelmatig via Justeat. Besluit een keer de bron te checken, en denkt: Nee toch zeker, zo stom zullen ze toch niet zijn? Besluit de proef op de som te nemen en het werkt. Om vervolgens op grote schaal misbruik te maken.
Zoiets zal het wel geweest zijn inderdaad.. iemand die het ff niet kon laten te proberen en het vervolgens wat vrienden verteld heeft en dergelijke. Een echte hack is het nauwelijks te noemen, meer een 'trucje'.... dat men heeft laten lopen tot de schade 30k euro bedroeg.

Ben benieuwd of ze dat geld gaan terugzien trouwens... ergens heb ik het idee van niet. De bedragen zijn te klein on rendabel civiel te procederen, en het OM zal echt geen moeite doen voor flessentrekkerij met tientjes tegelijk. Niet dat het zoveel uitmaakt, die gasten een boel gratis pizza's en justeat een boel publiciteit die langs andere weg zeker duurder was geweest - mooie stunt?

Re: Casus: never trust user input

Geplaatst: zo 18 okt 2009, 17:06
door 317070
Een echte hack is het nauwelijks te noemen, meer een 'trucje'....
Waar trekt een mens de lijn? Alle hacks zijn feitelijk gewoon 'trucjes' (je mishandelt/bedreigt/kwetst niemand), je zit ook maar wat te typen op het toetsenbord of klikken met je muis...

Daarom dat computercriminaliteit nogal lastig te bestrijden is...

Re: Casus: never trust user input

Geplaatst: zo 18 okt 2009, 18:24
door Cycloon
Op zich is het een hack want je hoort het niet zo te doen. Inbreken in oude autootjes lukt ook makkelijk met een handigheidje maar het blijft inbreken.

Re: Casus: never trust user input

Geplaatst: ma 19 okt 2009, 01:33
door Benm
Bij een echte hack denk ik toch meer aan mensen die zich toegang verschaffen tot andermans database en dergelijke. Bij dit verhaal heb ik meer het idee van een open deur, wellicht zo gelaten voor gratis publiciteit op een zeker punt :eusa_whistle: