WebApplicaties maken voor het overgrote deel gebruik van de MySQL Database software. De databases worden gevuld met gegevens uit web formulieren. In programmatuur is het heel makkelijk om de gegevens uit het formulier rechtstreeks in de database te zetten. Het zal een ieder verbazen hoeveel applicaties er zijn die geen controle uitvoeren op deze gegevens voordat ze opgeslagen worden.
Wat is een MySQL Injection
Interesse in een klein beetje techniek?
Uit het formulier komt een wachtwoord terug. Mooi in sterretjes getoond door de browser, netjes met SSL (HTTPS) verkeer doorgegeven aan de server. Vervolgens is er het SQL-commando in de programmatuur dat er als volgt uit ziet:
select username, password
from usertable
where (username = ''$username'') and (password = ''$password'');
Als dit commando iets teruggeeft, is username en password correct en is de gebruiker ingelogd.
Dat werkt prima als u als wachtwoord opgeeft:
geheim123
Maar wat nou als u als wachtwoord opgeeft:
weeikniet'' OR ''x'' = ''x
Het commando in de programmatuur wordt dan:
select username, password
from usertable
where (username = ''piet'') and (password = ''weeikniet'' OR ''x'' = ''x'');
Een correct MySQL commando en elke gebruiker, die op de hoogte is van de username ”piet”, heeft hiermee toegang.
En dit is nog maar 1 van de meest simpele vormen van MySQL Injection
Secwatch heeft verstand van MySQL Injections
Secwatch voert MySQL Injection controles uit in het kader van haar Web Application Scan dienstverlening. De Web Application Scan voert nog veel meer controles uit, MySQL Injection daar één van.