Welcome to TechNet Blogs Sign in | Join | Help

Inyección SQL... esta bajo ataque?

Hay muchos sitios y blogs que hablan sobre el tema de inyección SQL. Puede encontrar toda la información en este artículo, y más, en los sitios siguientes:

El blog de SWI: http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx

El blog de Neil Carpenter: http://blogs.technet.com/neilcar/archive/2008/03/14/anatomy-of-a-sql-injection-incident.aspx

http://blogs.technet.com/neilcar/archive/2008/03/15/anatomy-of-a-sql-injection-incident-part-2-meat.aspx

La inyección SQL últimamente es un tema que recibe mucha atención.

La verdad es que no es falta de una explotación de vulnerabilidad de IIS o SQL conocido o 0-day. Hemos recibido muchos casos de inyección SQL y todos son fallos de código ASP/ASPX. A demás, el usuario de SQL utilizando su aplicación ASP no necesita ser un sysadmin.

En general, la inyección SQL es el resultado de:

  • Validación floja de los datos entrada
  • Construcción dinámica de las sentencias SQL.
  • Usuarios de SQL demasiado privilegiados

 

Detección:

¡Ya sabemos dos cosas que son muy importantes para revisar y evitar un ataque de inyección SQL!

· El código ASP/ASPX

· Los derechos de usuarios de SQL

Al primero, hay que saber si nuestros sitios están o estaban bajo ataque. Por eso, tenemos que analizar los logs de IIS. Hay muchas herramientas de consultas disponibles en Internet por hacer esto, una es LogParser. Podemos ejecutar la siguiente:

LogParser -i:iisw3c -o:csv "SELECT * INTO suspicious.csv FROM ex*.log WHERE cs-uri-query LIKE '%CAST(%' or cs-uri-query LIKE '%dEcLaRe%'"

O puede descargar una herramienta que lo hace automáticamente: http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=WSUS&ReleaseId=13436

¡Si el log tiene datos, tenemos un problema!

En caso de inyección SQL que hemos visto últimamente, buscamos por el texto así:

DECLARE%20@S%20NVARCHAR(4000);SET%20@S=CAST(0x440045004300...7200%20AS%20NVARCHAR(4000));EXEC(@S);--

Verificamos si un <script> tag estaba inyectado en las tablas de la base de datos utilizado con el aplicativo de web.

 

Acción:

¡Es muy importante cerrar el acceso a nuestro aplicativo de web ahora mismo para proteger la gente quien lo visita!

Antes de abrirlo, tenemos que revisar el código ASP/ASPX y el usuario de SQL o contactamos el vendedor del aplicativo de web. El log contiene las páginas web que están utilizando para el ataque. Estas páginas son buenas para empezar de revisar el código. Presta atención que necesitamos revisar todas las páginas ASP/ASPX, no solo aquellas listadas en el log.

Hay métodos para filtrar inyección SQL utilizando palabras muy conocidas como CAST, DECLARE pero estos métodos solo son temporales y no es seguro que bloqueen todos.

Para más información: http://blogs.iis.net/nazim/archive/2008/04/28/filtering-sql-injection-from-classic-asp.aspx

Puede encontrar enlaces de los sitios abajo que pueden ayudarle de corregir el código:

SLQ Injection, ASP.NET, ADO.NET
http://msdn.microsoft.com/en-us/library/bb671351.aspx

SQL Injection in ASP code (diferente que arriba!)
http://msdn.microsoft.com/en-us/library/cc676512.aspx

How SQL Injection works
http://msdn.microsoft.com/en-us/library/ms161953.aspx

Published Sunday, June 15, 2008 10:29 PM by ksarens
Filed under: ,

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# re: Inyección SQL... esta bajo ataque?

Monday, June 08, 2009 1:34 AM by h1n1-al

Muy util el post. Nadamás quisiera agregar que no solo en código ASP se da esta falla de seguridad. Esa vulnerabilidad debida a una mala práctica de programación se puede encontrar en prácticamente cualquier lenguaje que integre SQL entre sus herramientas. Como PHP, Perl hasta en C podemos aprovechar este error y debemos prevnirlo... Saludos!

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker