Para empezarCualquier auditor de seguridad o atacante necesita hablar el idioma de las bases de datos para entender dónde fallan.
El lenguaje de los datos
SQL, o Structured Query Language, es el lenguaje estándar utilizado para interactuar con bases de datos relacionales. Nos permite consultar información, introducir nuevos registros, modificar datos existentes y borrarlos por completo de forma estructurada.
La instrucción SELECT
La sentencia SELECT es la más utilizada en auditorías y explotación web. Se emplea para extraer información de una o varias tablas según los criterios de filtrado que definamos mediante la cláusula WHERE.
$ sqlite3 db.sqlite
sqlite> SELECT username, role FROM users WHERE id = 1;
admin | administrator
sqlite>
Insertar y modificar datos
Para alterar el estado de la base de datos utilizamos comandos de escritura que requieren privilegios específicos y una sintaxis rigurosa para no corromper la integridad de la información almacenada.
Marca cada paso al entenderlo · 0/4
La instrucción DELETE
DELETE elimina registros específicos de una tabla de manera permanente si no existen restricciones de integridad referencial. Un borrado mal ejecutado puede destruir una aplicación por completo.
$ sqlite3 db.sqlite
sqlite> DELETE FROM sessions WHERE expired = 1;
sqlite> Changes made: 14 rows deleted.
El peligro del WHERE ausente
Olvidar la cláusula WHERE en un UPDATE o un DELETE es uno de los errores más críticos y comunes en administración de sistemas. En un entorno de pentesting, entender esta lógica permite dimensionar el impacto de una inyección SQL maliciosa.
El núcleo del riesgo web
La gran mayoría de las vulnerabilidades críticas en aplicaciones web derivan de una mala gestión de estas cuatro operaciones SQL básicas al concatenar entradas de usuario directamente en las consultas sin sanitización.
Atajos: ← → para cambiar de pieza · / para buscar
