Portswigger Academy Notes

SQLi

Técnica de explotación que consiste en la inyección de funcionalidades que subvierte la lógica de dominio implementada en el sistema objetivo. Se produce por la ausencia de mecanismos de control de los datos ingresados por el cliente. La vulnerabilidad permite concatenar instrucciones de SQL ingresando caracteres que cierran un tipo de dato cadena. La vulnerabilidad consiste en una entrada contaminada.

CWE-74

Neutralización inapropiada de elementos especiales en salida usadas por un componente inferior

Existen subclases de SQLi

Principio Operativo

Considerar la siguiente expresión algebraica relacional

Esta expresión implementada en el lenguaje de programación Structure Query Language queda expresada:

SELECT * FROM x WHERE y = 'a' AND z = 1

Un adversario puede manipular esta cadena en el sistema si tiene derechos de escritura sobre el valor 'a', un dato tipo caracter que es recibido por el sistema como parámetro de una función que compone la expresión de consulta sobre la base de datos objetivo

La cadena contaminada queda expresada de la siguiente forma

SELECT * FROM x WHERE y = 'a'--' AND z = 1

Los caracteres de comentario del lenguaje SQL, al no ser neutralizados por un mecanismo de control, permiten anular una porción de la cadena. El adversario puede entonces pasar a la siguiente etapa, que es ordenar nueva funcionalidad inesperada. Es importante considerar el tipo de datos expuesto por sistema y como las entradas pueden ser contaminadas.

Prueba de Concepto Uno: SQLi en cláusula WHERE que permite la exfiltración de datos ocultos