Signal-What-is-SQL-injection-Hero

Wat is een SQL-injectie precies?

SQL-injectie is een cyberaanval waarmee een database wordt misleid zodat hackers er toegang toe krijgen. Een SQL-injectie dwingt een niet-beveiligde database tot het uitvoeren van onveilige opdrachten door de SQL (Structured Query Language) van de database te infecteren met schadelijke code. SQL is de meest gebruikte taal voor databasebeheer.

Dit artikel omvat:

    SQL-injectie (SQLi) is weliswaar al tientallen jaren bekend maar blijft een hardnekkige dreiging die vandaag de dag verantwoordelijk is voor twee derde van alle aanvallen op webapplicaties. Bij OWASP, een non-profitorganisatie die toonaangevend is op het gebied van kennis van cyberbeveiliging, staan injecties op nummer 1 in de lijst met veiligheidsrisico’s voor webapplicaties.

    Kwetsbaarheid voor SQL-injecties is vaak het resultaat van een slecht geschreven API (application programming interface). Webapplicatieontwikkelaars zijn vaak blind voor hun fouten tot deze door een ander worden ontdekt. Daarom zijn nieuwe producten vaak een makkelijk slachtoffer van ‘ zero-day’-aanvallen met SQL-injecties.

    En als zij ze niet zelf van uw gestolen gegevens profiteren, zijn handige cybercriminelen vaak actief met het verkopen van uw gegevens aan gegevenshandelaren. SQL-hacks zijn vaak lucratief en redelijk eenvoudig uit te voeren met de juiste vaardigheden en ervaring, Dit maakt ze tot een belangrijke inkomstenbron voor veel hackergroepen.

    Wat is SQL?

    SQL (Structured Query Language) is de standaardprogrammeertaal voor databasebeheer. Wanneer er met een database wordt gecommuniceerd of er om gegevens wordt gevraagd, is SQL de meest gebruikte taal om toegang te krijgen tot die gegevens.

    Stel u een database voor als het magazijn van een webapplicatie. Een database zit vol met tabellen die kunnen worden vergeleken met dozen vol gegevens, zoals klantgegevens, inloggegevens items die te koop zijn. Wanneer u informatie invoert in een webapplicatie, stelt SQL de database in staat om de aanvraag te verwerken en de aangevraagde informatie te retourneren.

    De intuïtieve, op het Engels gebaseerde syntaxis heeft ervoor gezorgd dat SQL voor veel API-programmeurs de voorkeurstaal voor databasebeheer is. Als een database het magazijn van een webapplicatie is, is een API de uitnodigende etalage. Dit is wat u daadwerkelijk gebruikt wanneer u door een website navigeert en aanvragen indient via een invoer- of formulierveld (zoals zoeken naar een item).

    SQL bevindt zich direct achter de etalage en neemt hier uw aanvragen in ontvangst. Deze wordt omgezet in code die de database kan verwerken. Helaas maakt het vermogen van SQL om gebruikersinvoer te interpreteren het tot een eenvoudig doelwit voor hacks.

    Voor het geval u het zich afvroeg, u kunt SQL uitspreken als “sequel” of als “S-Q-L.” Mocht het u wat doen duizelen, werp dan eens een blik op onze stoomcursus over andere cyberbeveiligingsterminologie.

    Hoe gaat een SQL-injectieaanval in zijn werk?

    Hackers voeren een SQL-injectieaanval uit via een invoerveld — zoals een inlogportal, een formulierveld of een zoekbalk — in een web-API. Door de invoergegevens te veranderen met een schadelijke snippet of code die een exploit wordt genoemd, kan de cybercrimineel een onbeveiligde database zo misleiden dat deze de gegevens als een opdracht interpreteert.

    Hackers voeren SQLi-aanvallen uit via invoervelden van websites die rechtstreeks met API's communiceren.Websites met onbeveiligde invoervelden kunnen kwetsbaar zijn voor SQLi-aanvallen.

    Door meermalen SQLi-aanvallen uit te voeren, krijgen hackers een goed idee van hoe kwetsbaar software is. Het onderstaande voorbeeld laat zien hoe zo’n SQLi-aanval in zijn werk gaat:

    1. U probeert toegang te krijgen tot uw gebruikersgegevens die op een website staan en voert dus uw gebruikersnaam in: AVGRocks17.

    2. SQL zorgt ervoor dat uw invoer door de database kan worden begrepen. Dat wil zeggen, SQL wijzigt uw invoer in zoiets als: “Zoek gebruiker AVGRocks17 en geef mij zijn of haar gegevens.” U hoeft alleen maar “AVGRocks17” te typen,maar SQL zet de aanvraag om in code die de database vertelt wat er moet worden gedaan. Dit zou er bijvoorbeeld zo uit kunnen zien:

    SELECT * FROM users WHERE userID = AVGRocks17;

    De bovenstaande asterisk betekent “alle details” , waarschijnlijk o.a. uw echte naam en wachtwoord.

    In plaats van op een specifieke gebruiker te filteren, kan een SQL-injectie van bijvoorbeeld OR 1=1 in een zoekbalk, login portal of ander invoerveld de SQL dwingen de database om alle details van ALLE gebruikers te vragen. Hoe dan? De database ontvangt:

    SELECT * FROM users WHERE userID = AVGRocks17 OR 1= 1;

    De database interpreteert dit als een opdracht om de gegevens van alle gebruikers te doorzoeken en alles te retourneren als de ID overeenkomt met AVGRocks17 of als 1 gelijk is aan 1 — wat natuurlijk altijd het geval is.

    SQL-injecties kunnen elementen van een database wijzigen, invoegen of verwijderen of de basis leggen voor een denial of service-aanval. Hackers kunnen ook achterdeurtjes installeren die hun onbeperkt toegang tot een server geeft.

    Met algemene SQL-injectieopdrachten kunnen hackers gegevens manipuleren, stelen of vernietigen, identiteiten stelen of vervalsen of databasemachtigingen wijzigen. In extreme gevallen kan met een SQL-injectie de volledige controle over een database door een aanvaller worden overgenomen.

    Waarom is een SQL-injectie zo effectief? Dat zou eigenlijk niet moeten. Kwetsbaarheid voor SQL-injecties is vaak het resultaat van slordig programmeerwerk door een webontwikkelaar. Bedrijven huren vaak onervaren ontwikkelaars in die over weinig ervaring beschikken. Bovendien neemt het programmeren van een goede beveiliging meer tijd in beslag. Door strakke deadlines geven veel bedrijven minder prioriteit aan veiligheid.

    Het is echter niet allemaal menselijke dwaasheid. Aangezien de logica zo eenvoudig is, kunnen SQLi-aanvallen makkelijk worden geautomatiseerd. Zelfs de beste programmeurs delven het onderspit tegen een leger bots.

    Voorbeelden van echte SQL-injecties

    In 2008 werd betalingsverwerker Heartland Payment Systems gehackt met een SQL-injectie. Het resultaat: een verlies van meer dan $130 miljoen. De aanvallers stalen maar liefst 130 miljoen creditcardnummers in wat de geschiedenisboeken is ingegaan als een van de grootste crediticardgegevenslekken ooit.

    In 2014 verzamelde een groep hackers meer dan 1,2 miljard unieke combinaties van ID's en wachtwoorden van meer dan 420.000 websites overal op het internet. De Russische hackers gebruikten SQL-injecties om databases te instrueren hun inhoud te openbaren en over te dragen.

    In 2015 kwam de Britse telecomgigant TalkTalk onder vuur te liggen toen bleek dat door zwakke webveiligheid de persoonsgegevens van honderdduizenden klanten op straat kwamen te liggen. Hoewel de veiligheidsrisico's van SQL op dat moment ruimschoots bekend waren, bleek het bedrijf niet in staat om iets tegen de aanval te doen.

    Dit volgende voorbeeld gaat iedereen aan die wel eens gamet. In 2016 werden de forums van Epic Games gehackt en werden er 800.000 gebruikersaccounts gelekt. Het populaire online messageboard vBulletin SQL werd aangevallen met SQL-infecties en is nu berucht om zijn kwetsbaarheid voor SQL-exploits. Je kunt stellen dat SQLi-aanvallen zich als een lopend vuurtje binnen de gamingindustrie verspreiden.

    Of het nu gaat om een groot bedrijf, een website-eigenaar of een gemiddelde internetgebruiker, niemand is immuun voor SQLi-aanvallen. Het gemak van SQL garandeert praktisch dat SQLi-aanvallen wijdverbreid zullen blijven voorkomen.

    De beste manier om uw gegevens veilig te houden, is door realtime beveiligingssoftware te gebruiken die bescherming biedt tegen phishing-aanvallen en netwerkinfiltraties. AVG AntiVirus FREE beschermt u niet alleen tegen veiligheidskwetsbaarheden, phishing, het lekken van wachtwoorden, maar ook tegen het volledige scala aan malware.

    Typen SQL-injectie

    De drie belangrijkste typen SQL-injectie zijn in-band SQLi, out-of-band SQLi en inferential SQLi. Een SQL-injectie wordt in verschillende categorieën verdeeld op basis van hoe algemeen de injectie is, welke aanvalsmethode er wordt gebruikt en de potentiële schade die de aanval aanricht.

    Wat is een in-band SQL-injectie?

    In-band SQLi is het basistype SQL-injectie. Bij een SQLi-aanval kan een hacker een aanval uitvoeren en de resultaten op dezelfde server ophalen. In-band SQL-injectie wordt meestal gebruikt omdat het zo eenvoudig is om deze uit te voeren.

    Wat is een out-of-band SQL-injectie?

    Bij out-of-band SQLi-aanvallen wordt geprobeerd om de inhoud van een database op een andere server te extraheren. Deze database moet dan wel DNS- of HTTP-aanvragen kunnen doen. Out-of-band SQLi’s komen minder vaak voor maar zijn wel ernstiger.

    Wat is een inferential (blind) SQL-injectie?

    Een inferential (blind) SQL-injectie stuurt waar- of niet-waar-statements aan een database om de structuur ervan te achterhalen. Door de ontvangen antwoorden te bestuderen, kan een hacker de potentiële kwetsbaarheden van een database in kaart brengen.

    Kwetsbaarheden voor SQL-injectie identificeren

    De beste manier om te achterhalen hoe kwetsbaar uw database is voor een SQL-injectie, is door de database te testen. Hieronder bespreken wij een aantal van de beste testtools voor SQL-injecties.

    • sqlmap is an open-source testtool voor penetratie waarmee een systeem op veiligheidskwetsbaarheden kan worden gescand. sqlmap kan een dump maken van de volledige inhoud van een database, maar dit betekent ook dat dit ook door hackers kan worden gedaan.

    • suIP.biz is een online scanner die wordt aangedreven door sqlmap waarmee in populaire databasebeheersystemen als MySQL, Oracle en Microsoft SQL Server op SQL-injecties kan worden getest.

    • Hacker Target scant op kwetsbaarheden en richt zich op basis van HTTP GET-aanvragen (een bepaald type URL) op blinde en foutgebaseerde injecties. Ook deze tool wordt aangedreven door sqlmap.

    • Vega scant op SQL-injecties en op een vergelijkbaar type aanval die Cross-Site Scripting-injecties (XSS-injecties) worden genoemd. Vega is open-source en gebruikersvriendelijk, en draait op Linux, macOS en Windows.

    SQLi-aanvallen voorkomen

    Webontwikkelaars kunnen SQLi-aanvallen voorkomen door consciëntieus te coderen. Maar ook u kunt veel doen om uw vertrouwelijke gegevens te beschermen tegen SQLi-aanvallen.

    • Controleer of een website veilig is voordat u uw informatie invoert en volg de nieuwsberichten over beveiliging. Zo weet u dat u uw wachtwoord moet veranderen wanneer een door u gebruikte website geïnfecteerd is geraakt. AVG BreachGuard kan helpen voorkomen dat uw gegevens kunnen worden gelekt.

    • Gebruik sterke wachtwoorden die bijvoorbeeld uit minstens 12 tekens bestaan en sla ze veilig op met een goed programma voor wachtwoordbeheer.

    • Controleer met Avast Hack Check of uw accounts betrokken zijn bij een SQL-injectie of een vergelijkbare aanval. Als u merkt dat u dit is overkomen, verander dan onmiddellijk uw wachtwoord.

    Webontwikkelaars en eigenaren van een bedrijf kunnen aan de hand van de volgende tips hun databases beschermen tegen SQLi-aanvallen.

    Geparametriseerde query's en schone invoer

    Het voorkomen van SQLi-aanvallen begint met schone invoer — het opschonen van de applicatiecode door het instellen van parameters om onderscheid te maken tussen invoergegevens (legitieme info) en opdrachten (hackerinfo). Het probleem van vervuilde invoer is zo wijdverbreid dat een xkcd webcomic about drop-table SQL injection viraal is gegaan.

    WAF (Web Application Firewall)

    Een firewall voor webapplicaties (WAF) is een barrière waarmee schadelijke software en het verkeer tussen een webapplicatie en het internet wordt gefilterd. Een WAF kan zo worden afgestemd dat het bescherming biedt tegen verschillende typen SQL-injecties en andere beveiligingsrisico's.

    Liever een whitelist gebruiken dan een blacklist

    Met een blacklist wordt voorkomen dat een gebruiker bijvoorbeeld een is-gelijkteken, een puntkomma, een aanhalingsteken of een ander teken gebruikt dat problemen kan opleveren. Aangezien met een whitelist alleen bepaalde tekens worden toegestaan, is het gebruik hiervan restrictiever en heeft het meer impact. Hackers beschikken over creatieve manieren om een blacklist te omzeilen, maar met een whitelist komen ze niet ver.

    Gegevensversleuteling

    Met gegevensversleuteling blijven uw gegevens veilig achter slot en grendel tot ze weer aan u worden geretourneerd. Als de gegevens in een database zijn versleuteld, kunnen hackers alleen bij de werkelijke gegevens als zij deze eerst ontgrendelen.

    Up-to-date beveiligingssoftware gebruiken

    Hoe waakzaam u ook bent, proberen om miljoenen hackers buiten de duur te houden is geen sinecure. Moderne beveiligingssoftware voor bedrijven kunnen automatisch patchen en zo helpen bescherming te bieden tegen zich ontwikkelende SQL-injectiedreigingen.

    AVG Antivirus biedt bescherming tegen dreigingen en kwetsbaarheden

    Als uw favoriete database het slachtoffer wordt van een SQLi-aanval, valt daar niet veel tegen te doen, maar dat wil niet zeggen dat u hoeft te tolereren dat de beveiliging op uw eigen apparaten tekortschiet.

    De gepatenteerde beveiligingssoftware van AVG is dag en nacht op zoek naar dreigingen. Scan uw apparaat razendsnel en verhelp gaten in de beveiliging of wifi-kwetsbaarheden. Beveilig uw e-mail tegen pottenkijkers en blokkeer schadelijke downloads, onveilige koppelingen en pogingen to phishing.

    Bescherm uzelf op allerlei manieren tegen online dreigingen, bijvoorbeeld door uw netwerk te beveiligen, verouderde software te verwijderen of korte metten te maken met malware. Probeer vandaag nog AVG AntiVirus FREE.

    Bescherm uw Android-apparaat tegen dreigingen met AVG AntiVirus

    Gratis installeren

    Bescherm uw iPhone tegen dreigingen met AVG Mobile Security

    Gratis installeren