Que es sql injection

Ejemplo de inyección sql url

Utilice nuestra hoja de trucos de inyección SQL para conocer las diferentes variantes de la vulnerabilidad de inyección SQL. En esta hoja de trucos puede encontrar información técnica detallada sobre las vulnerabilidades de inyección SQL contra los servidores SQL de MySQL, Microsoft SQL Server, Oracle y PostgreSQL.

Una hoja de trucos de inyección SQL es un recurso en el que se puede encontrar información técnica detallada sobre las diferentes variantes de la vulnerabilidad de inyección SQL. Esta hoja de trucos es una buena referencia tanto para los probadores de penetración experimentados como para los que se están iniciando en la seguridad de las aplicaciones web.

Esta hoja de trucos de inyección SQL fue publicada originalmente en 2007 por Ferruh Mavituna en su blog. La hemos actualizado y trasladado desde el blog de nuestro CEO. Actualmente esta hoja de trucos SQL sólo contiene información para MySQL, Microsoft SQL Server, y alguna información limitada para los servidores SQL ORACLE y PostgreSQL. Algunos de los ejemplos en esta hoja pueden no funcionar en todas las situaciones porque los entornos reales pueden variar dependiendo del uso de paréntesis, diferentes bases de código y sentencias SQL inesperadas, extrañas y complejas.  Los ejemplos se proporcionan para permitirle tener una idea básica de un posible ataque y casi cada sección incluye una breve información sobre sí misma.

Inyección sql o 1=1

Cuando una aplicación es vulnerable a la inyección SQL y los resultados de la consulta son devueltos dentro de las respuestas de la aplicación, la palabra clave UNION puede ser utilizada para recuperar datos de otras tablas dentro de la base de datos. Esto resulta en un ataque de inyección SQL UNION.

El primer método consiste en inyectar una serie de cláusulas ORDER BY e incrementar el índice de la columna especificada hasta que se produzca un error. Por ejemplo, asumiendo que el punto de inyección es una cadena entrecomillada dentro de la cláusula WHERE de la consulta original, se presentaría:

Esta serie de cargas útiles modifica la consulta original para ordenar los resultados por diferentes columnas en el conjunto de resultados. La columna de una cláusula ORDER BY puede especificarse por su índice, por lo que no es necesario conocer los nombres de ninguna columna. Cuando el índice de la columna especificada excede el número de columnas reales en el conjunto de resultados, la base de datos devuelve un error, como:

La aplicación puede devolver el error de la base de datos en su respuesta HTTP, o puede devolver un error genérico, o simplemente no devolver ningún resultado. Siempre que se pueda detectar alguna diferencia en la respuesta de la aplicación, se puede inferir cuántas columnas se están devolviendo desde la consulta.

Tipos de inyección sql

La inyección SQL, también conocida como SQLI, es un vector de ataque común que utiliza código SQL malicioso para la manipulación de la base de datos del backend para acceder a información que no estaba destinada a ser mostrada. Esta información puede incluir cualquier número de elementos, incluyendo datos sensibles de la empresa, listas de usuarios o detalles privados de los clientes.

El impacto que la inyección SQL puede tener en una empresa es de gran alcance. Un ataque exitoso puede provocar la visualización no autorizada de listas de usuarios, la eliminación de tablas enteras y, en ciertos casos, que el atacante obtenga derechos administrativos sobre una base de datos, todo lo cual es muy perjudicial para una empresa.

SQL es un lenguaje estandarizado que se utiliza para acceder a las bases de datos y manipularlas con el fin de construir vistas de datos personalizadas para cada usuario. Las consultas SQL se utilizan para ejecutar comandos, como la recuperación de datos, las actualizaciones y la eliminación de registros. Diferentes elementos de SQL implementan estas tareas, por ejemplo, las consultas que utilizan la sentencia SELECT para recuperar datos, basándose en parámetros proporcionados por el usuario.

Las inyecciones de SQL se suelen clasificar en tres categorías: SQLi en banda (clásica), SQLi inferencial (ciega) y SQLi fuera de banda. Se pueden clasificar los tipos de inyecciones SQL en función de los métodos que utilizan para acceder a los datos del backend y su potencial de daño.

Ejemplo de inyección sql

Puede utilizar las consultas por lotes para ejecutar varias consultas en sucesión. Tenga en cuenta que mientras se ejecutan las consultas sucesivas, los resultados no se devuelven a la aplicación. Por lo tanto, esta técnica es principalmente de uso en relación con las vulnerabilidades ciegas donde se puede utilizar una segunda consulta para desencadenar una búsqueda de DNS, un error condicional, o un retraso de tiempo.

Con MySQL, las consultas por lotes normalmente no pueden ser utilizadas para la inyección SQL. Sin embargo, esto es ocasionalmente posible si la aplicación objetivo utiliza ciertas APIs de PHP o Python para comunicarse con una base de datos MySQL.

Puede hacer que la base de datos realice una búsqueda de DNS a un dominio externo. Para hacer esto, necesitará usar el cliente Burp Collaborator para generar un subdominio Burp Collaborator único que usará en su ataque, y luego sondear el servidor Collaborator para confirmar que ocurrió una búsqueda DNS.

La siguiente técnica aprovecha una vulnerabilidad de entidad externa XML (XXE) para activar una búsqueda de DNS. La vulnerabilidad ha sido parcheada pero existen muchas instalaciones de Oracle sin parchear:

Entradas relacionadas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad