viernes, 26 de febrero de 2010

Anatomía de un ataque de inyección SQL

La inyección de SQL quizás se ha convertido en la técnica más utilizada para poner en peligro las aplicaciones Web, principalmente por dos factores: su relativa sencillez y su alta tasa de éxito. No es frecuente que las personas vean la forma en cómo trabaja ese tipo de ataques, pero gracias a un reconocido investigador ahora tenemos esa oportunidad.

Rafal Los, especialista Senior de seguridad Web de HP, elaboró una descripción simple de cómo estos ataques pueden ser ejecutados, e incluye un vistazo a la psicología por detrás del éxito. En una conversación con un grupo de ejecutivos sobre el problema de la seguridad de aplicaciones Web, encontró que muchos de ellos se mostraron escépticos sobre el alcance de las vulnerabilidades en su código. Así que decidió demostrar el problema justo en frente de ellos.

"Es muchos caso la mejor maestra es la experiencia - y único deseo es mostrar este problemas a los más incrédulos que me soliciten realizarlo en sus sitios ... pero no deben sentirse obligados. Una persona ubicada en posterior de la sala exclamo "Bueno, si estos problemas son tan frecuentes, veamos si existe alguno en nuestros sitios". Salí de piloto automático y entró en modo de ataque cauteloso ", Rafal Los escribió en un blog la descripción ataque.

Después de un rápido vistazo al sitio del voluntario, noto un error que mostró la evidencia de que alguien había atacado el sitio. Así que a continuación añadió una marca al final de la URL, lo que provocó que la instrucción SQL fallara y generara un mensaje de error explicando exactamente cuál era el problema. Y eso fue más que suficiente para Los. Luego agregó: " 'OR '1' = '1" al final de la URL original.

SQL injectionSQL injection

"En primer lugar, hubo un error evidente en la base de datos, para mí eso significaba que no era la primera vez que se intentaba una intrusión. Esperemos que se haya vulnerador ANTES de que ellos robaran toda la información. A continuación, una único marcador genero un error, espero que se auto-explique ... yo simplemente genere una instrucción SQL para desencadenara un error y fallará la base, y SQL educada y amablemente me ha dicho todo sobre él, " escribió Los. "Por último, la declaración anexada 'OR'1' = '1 funcionó porque no fue la causa de un error ... ¿por qué? Es que 1 = 1 se evalúa como verdadera y la base de datos no generará un error si el resultado es ¡VERDADERO!

Con el permiso del propietario del sitio, Los explotó la vulnerabilidad y fue capaz de volcar el contenido de la base de datos back-end a su equipo portátil. Mirando a través de las tablas, se encontró con que la base de datos de hecho había sido comprometida con anterioridad, y que el atacante había inyectado unas cadenas que servirían malware en el sitio. Dicho sitio estaba tratando de instalar al troyano Zeus a sus visitantes.

No hay comentarios:

ShareThis