29 noviembre 2013

¿Quién descubrió las inyecciones de código SQL?

Hoy vamos a hablar de las inyecciones de código SQL (SQL Injections), una de las típicas vulnerabilidades que nos podemos encontrar en cualquier auditoría web. Ha llegado un punto que ya no nos sorprenden toparnos con ella en todo tipo de aplicaciones, sean críticas o no, y lo que está claro es que no sólo permite la obtención de información de la base de datos, si no la ejecución de comandos en el sistema operativo y el total compromiso del sistema afectado.

Lo más curioso de todo es que ¡lleva entre nosotros más de 15 años! Es de las vulnerabilidades más conocidas y siempre protagonista del Top 10 de amenazas OWASP, en cuya última edición las inyecciones de código se encuentran en primer lugar.

A continuación, vamos a remontarnos a sus orígenes para demostrar que no es una técnica avanzada, compleja, de difícil solución o novedosa. No veáis lo siguiente como un ejemplo básico...se sigue encontrando hoy en día. Quizás se descubriese antes, pero por lo menos, hablaremos de la primera vez que se publicó esta información en Internet.

¿Quién mencionó por primera vez una inyección de código SQL?

El protagonista de hoy es Rain Forest Puppy, cuyo nombre real corresponde con Jeff Forristal (@j4istal)

Jeff Forristal durante su última charla sobre Android en Black Hat USA 2013
Jeff es un investigador de seguridad que lleva más de una década dedicado al mundo de la seguridad en diferentes vertientes, y que actualmente se encuentra trabajando en Bluebox Security con el fin de investigar vulnerabilidades en dispositivos móviles. Entre sus aportaciones destaca, entre otras, la herramienta Whisker, de las primeras aplicaciones para análisis de vulnerabilidades web. En su sección de Packetstorm (lleva dado de alta desde 1999) veréis scripts y herramientas que ha compartido para la detección y explotación de vulnerabilidades sobre multitud de sistemas.

Durante una auditoría a un sistema NT, se encontró un servicio web que interactuaba con una base de datos MS SQL Server 6.5, y revisando la posibilidad del motoro SQL, se percató de que era posible ejecutar sentencias encadenadas (batch). Debido a que se encontró una página web que permitía introducir valores en parámetros para la realización de búsquedas, pensó en encadenar sentencias SQL para provocar la ejecución de consultas una vez la aplicación concatenase dicha consulta con la original en el código fuente. Además, como no podía ver el código fuente de la sentencia en sí, pensó en incluir caracteres guión para evitar la ejecución del código posterior a lo que él introdujese. ¿Os suena? Inyección SQL en toda regla y que evidenció con todo lujo de detalles y paso por paso, en el número 54 de la revista online PHRACK, publicada el 25 de Diciembre de 1998.

Dentro de su contribución como Rain Forest Puppy (pseudónimo que utilizó sin revelar su verdadera identidad durante muchísimos años....) con todo el proceso de intrusión sobre sistemas NT, se encuentra un apartado denominado "ODBC and MS SQL server 6.5" en el que comienza el proceso mencionado previamente:

Sección en el artículo de Rain Forest Puppy de Phrack 54
Curiosamente, uno de sus compañeros contactó con Microsoft para informar acerca de este nuevo abanico de posibilidades que ofrecía la aplicación vulnerable y la base de datos MS SQL Server. Microsoft no lo consideró un problema, y lo dejó estar.

Como colofón a su artículo, en el que escribe recomendaciones tras las vulnerabilidades descubiertas, una de ellas es la siguiente:

- Don't assume user's input is ok for SQL queries.

Que traducido quiere decir:

- No asumas que los valores introducidos por el usuario son siempre adecuados en sentencias SQL.

Recomendación que aún a día de hoy, no se tiene en cuenta ni por la cual se toman medidas, propiciando además de ataques por inyección de código SQL, los también famosos Cross-Site Scriptings y otras muchas vulnerabilidades causadas por una incorrecta validación de parámetros.

Os recomiendo leer el artículo completo de Rain Forest Puppy "NT Web Technology Vulnerabilities" pero sobretodo, tened en cuenta que se escribió hace casi 15 años....y lo poco que han cambiado las cosas.

[+] How Was SQL Injection Discovered? (eSecurityPlanet.com)

4 comments :

Longinos Recuero Bustos dijo...

Que casualidad!! Precisamente ayer charlando con un compañero, le dije que estaría bien saber quien[es] fue[ron] los descubridores de la inyección SQL. Buen aporte José A. Muchas gracias.

asdgasdg dijo...

http://www.youtube.com/watch?v=uztDGRR_hC8

muriel dijo...

en todo ese tiempo nada ha cambiado salvo tal vez la automatización... sencillamente genial

Armando Salinas dijo...

Seria mucho pedir que pusiera la historia completa de lo que es la inyeccion sql :( por favor :( es para mi tesis :(