Tots hem sentit notícies sobre bases de dades filtrades, d'organitzacions de tota mena, avui explicarem com passen. Per posar-vos en situació, SQL és el famós llenguatge de consulta de les bases de dades, el qual emprarem per realitzar aquestes injeccions, i així, auditar entorns mal desenvolupats (una cosa molt comuna).
SQL Injection (SQLI) és una tècnica d'atac que hem explorat per comprendre com s'exploten vulnerabilitats en entorns que no validen adequadament l'entrada de l'usuari a les consultes SQL enviades a la base de dades. He analitzat com els atacants poden utilitzar aquesta tècnica per executar consultes SQL malicioses i accedir a informació confidencial, com ara noms d'usuari, contrasenyes i altres dades sensibles emmagatzemades.
Si l'aplicació no valida l'entrada de l'usuari correctament, la consulta maliciosa s'executa a la base de dades, cosa que podria permetre l'accés no autoritzat a informació confidencial o fins i tot el control complet de la base de dades.
Identifiquem diversos tipus d'injeccions SQL comunes, incloent-hi:
- Injecció SQL basada en errors:
Aprofita errors al codi SQL per revelar informació. Per exemple, missatges específics en errors poden ser usats per extreure detalls addicionals del sistema. - Injecció SQL basada en temps:
Empra consultes que introdueixen retards deliberats. Per exemple, els atacants poden observar els temps de resposta per determinar detalls sobre lestructura de la base de dades. - Injecció SQL basada en booleans:
Usa consultes amb expressions booleanes per identificar informació addicional, com ara l'existència d'un usuari a la base de dades. Per exemple, es pot utilitzar una consulta amb una expressió booleana per determinar si un usuari existeix a una base de dades. - Injecció SQL basada en unions:
Utilitza la clàusula “UNIÓ” per combinar consultes i accedir a dades addicionals, com ara permisos d'usuaris juntament amb la informació bàsica. Per exemple, si s'utilitza una consulta que torna informació sobre els usuaris i s'afegeix una clàusula “UNION” amb una altra consulta que torna informació sobre els permisos, es pot obtenir informació addicional sobre els permisos dels usuaris. - Injecció SQL basada en consultes apilades:
Explota la capacitat de executar múltiples consultes en una sola instrucció, permetent realitzar múltiples operacions a la base de dades de manera no autoritzada. Per exemple, es pot utilitzar una consulta que insereix un registre en una taula i després afegir una consulta addicional que torna informació sobre la taula.
Aquestes tècniques s'apliquen a diferents tipus de bases de dades com, relacionals, NoSQL, de grafs o de objectes.
És important entendre els diferents tipus d'injeccions SQL i com es poden utilitzar per obtenir informació confidencial. Els desenvolupadors han d'assegurar-se de validar adequadament l'entrada de l'usuari i utilitzar tècniques de defensa, com la sanitització d'entrada i la preparació de consultes SQL, per prevenir les injeccions SQL a les seves aplicacions web. Igual que monitoritzar els logs que es generen en realitzar aquestes peticions, i poder detectar comportaments anòmals.
Us mostro un exemple a grans trets de com amb l'eina Burp Suite intercepte i modifico la petició POST per extreure informació d'una base de dades mitjançant una SQLI. Això es realitza en un portal login on nosaltres inserim un usuari i contrasenya que vàlida contra una base de dades.
Iker Berbel
Consultor IT
