
HitB: Hacking Javascript, de 'Basic' van vandaag
We maken het de scriptkiddies steeds makkelijker...
We maken het de scriptkiddies steeds makkelijker, zegt lezer Dick Verweij na zijn bezoek aan Hack in the Box. Javascript is net als het oude Basic: iedereen kan het programmeren leren, en leren hacken.

HitB: Hacking Javascript, de 'Basic' van vandaag
We maken het de scriptkiddies steeds makkelijker, zegt lezer Dick Verweij na zijn bezoek aan Hack in the Box. Javascript is net als het oude Basic: iedereen kan het programmeren leren, en leren hacken.
Deze bijdrage komt van lezer Dick Verweij, in het dagelijkse leven Sofware Architect bij AFAS Software . Hij was een van de zes lezers die een VIP-kaart voor Hack in the Box hadden gewonnen en doet namens Webwereld/Computerworld verslag van zijn ervaringen tijdens HitB.
Als je vroeger, en ik spreek dan van echt 'vroeger', een IBM PC kocht, dan kon je daar out-of-the box meteen op programmeren. Je hoefde geen SDK te downloaden, want downloaden bestond nog niet. Elke PC werd standaard uitgerust met een versie van een simpele en toegankelijke basis programmeertaal, ergo de naam "Basic". Tijdens het opstarten laadde de computer de "interpreter" vanuit het ROM en je kon direct van start. Power to the people!
Basic in the good old days:
Trekken we even in onze gedachte de lijn van 'Browser als OS' door, dan krijg je vandaag de dag ook een programmeeromgeving, ditmaal bij je internet browser, meegeleverd. In plaats van vanuit het statische ROM te laden, halen we bij elk pagina-bezoek de statische inhoud als HTML op, om er daarna met Javascript op los te gaan. En ook nu is het mogelijk om direct naar de interpreter (AKA als de "console") te switchen en daar te programmeren. Power (again) to the people!
Javascript console (F12) in Chrome:
Net zoals bij Basic is the learning curve van Javascript laag. Even snel wat op het scherm zetten is een 'alert away'. Even snel een berekening testen, een tochtje naar de console en je weet het. Even wat in je pagina animeren, "no problem!". Javascript vindt het niet erg als je een punt-kommaatje vergeet. Iedereen kan het leren, geen OO, strikte "type-checking" en grammaticaal niet van hoog niveau .. Ofwel Javascript is ontzettend toegankelijk! En analoog aan de historie van Basic en opvolger Visual Basic, voordat die taal mateloos populair werd, had ook Javascript in zijn begintijd last van imagoproblemen. Was Basic echt "not done" in de ogen van de programmerende elite, Javascript kon in de begindagen ook niet veel waardering oogsten. Programmeren voor de plebs!
Javascript populariteit op het internet:
Tegenwoordig weten we wel beter. Kijken we naar penetratie als taal van javascript dan zien we Javascript stevig op een vierde plek staan (bron: www.langpop.com). Javascript als ideale ondersteuning, als client-side browser programmatuur. Javascript als de ideale manier om je rapid-development/prototyping in te doen. Javascript voor die mooie user-experience! Maar ook steeds meer tekenen dat Javascript als business-laag wordt ingezet. En dan krijgen we jeuk. Want hoe veilig is dat Javascript nu eigenlijk?
Kijken we naar het verleden, dan herinneren we ons nog wel die irritante Excel macro-tjes, waar slechts met het openen van een spreadsheet je computer werd overgenomen. Gewoon in Basic, hoor. En even toegankelijk en maakbaar als Excel macro's toen, slaan nu de XSS-aanvallen en browserkapingen je om de oren. Getuige ook de meer dan ruime vertegenwoordiging bij de internationale HITB (Hack in the Box) conferentie van allerlei Javascript-hacks en -exploits. Trucjes die zich niet meer alleen tot de client-side (browser) beperken maar ook steeds meer effect hebben op server en backend- toepassingen.
NoSQL met JS-engine: dossen maar!
Tot een recent verleden waren nog de relationele databases, compleet met hun eigen taal (SQL) en schema, de duidelijke keuze voor de business-laag. Tegenwoordig winnen de zogenaamde NoSQL-databases steeds meer terrein. Databases zonder relationeel model, databases die lezen als een gigantisch tekstbestand. En bijna altijd uitgerust om gegevens te verwerken in het, rechtstreeks uit Javascript afkomstige, JSON-formaat. Op zich niets mis mee, ware het niet dat iemand bedacht dat deze databases moesten worden versterkt met een Javascript-engine. Presto! Nu is het wel heel gemakkelijk om je database te "dossen". Je plaatst gewoon een 'sleep()' commando in je JSON-upload!
En zo zitten we dan bij de HitB-presentatie "Exploiting NoSQL Like Never Before" van Francis Alexander die eenvoudig aantoont hoe hij met javascript een NoSQL backend laat crashen. Of Hans Michael Verbaek die met zijn sessie "XSSing Your Way to Shell", onbeveiligde Wordpress-sites op de knieën dwingt en shell access verkrijgt. En uiteraard weer met Javascript. En hoe gemakkelijk de ingebouwde security features van de taal om zeep worden geholpen en zelfs voor meer onveiligheid kunnen zorgen in de sessie "JS Suicide: Using Javascript Security Features to Kill JS Security" van Ahamed Nafeez. Kortom: Javascript-hacking lives! Everybody can learn!
Je kan niet meer zonder Javascript!
Mocht je het je nog afvragen: nee, je kunt niet meer zonder Javascript! Sites zijn niet meer te gebruiken zonder scripting. Kijk voor de grap maar eens op de WebWereld-site naar alle "third party libraries" die er geladen worden. Is dat veilig? Blijft dat veilig? Moeten we ons zorgen maken als er straks een NSA-script tussen zit? Gelukkig wordt er veel gecheckt, maar soms bekruipt me het gevoel dat als we straks complete applicaties in Javascript gaan bouwen, we de spreekwoordelijk doos van Pandora openen. Javascript is krachtig, Javascript is flexibel en Javascript is here to stay! Alleen moeten we hier nu *alles* in maken? Schieten we nu niet door?
Wel 13 externe script bronnen bij WebWereld!
Natuurlijk, hoe populairder iets is, hoe meer pogingen er zullen worden gedaan om het systeem om de tuin te leiden. En hoe meer 'attack vectors' er bekend zijn, hoe beter we ons kunnen wapenen tegen de soms haast kinderlijk eenvoudige XSS (Cross Side Scripting) kwetsbaarheden. Er zullen net zoals in Basic prachtige applicaties gebouwd worden in Javascript. Maar ik huiver van de (web)wereld waar we straks een antivirus pakket moeten draaien om een webpagina te mogen zien....
volgens tiobe van plaats 11 naar plaats 9 gestegen.
[Link]
Reageer
Preview