¿Cómo saber si una página web ASP es vulnerable a la inyección de SQL?

1

Tengo algunas experiencias de trabajo con aplicaciones web PHP vulnerables a la inyección de SQL y la explotación exitosa de este tipo de vulnerabilidad, pero nunca intenté hacer esto en una aplicación web basada en ASP. Cuando intentamos descubrir si una aplicación web de PHP es vulnerable a la inyección de SQL, generalmente agregamos una comilla al final de un parámetro de entrada como este:

http://example.com/index.php?id=1'

y si obtenemos un error como este:

  

Tienes un error en tu sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de '' 'en la línea 1

sabemos que es vulnerable. En algunos casos, obtenemos una página en blanco o nos faltan datos en la página, lo que puede significar que es vulnerable.

Entonces, aquí está mi pregunta: si agrego una cita al final de un parámetro de entrada en una página web ASP clásica y obtengo una página en blanco o pierdo algunos datos en esa página, ¿significa que es vulnerable a SQL? ¿inyección? ¿Y hay otras formas de saber si existe una vulnerabilidad de inyección SQL en una aplicación web ASP?

    
pregunta sherl.lol 19.11.2017 - 18:36
fuente

2 respuestas

1

Lo siento, quiero ampliar un poco tu proceso de pensamiento. No es solo un final al final. Quiero decir, eso es bueno, rápido de encontrar un porcentaje decente de los agujeros.

Permítame darle un ejemplo de una vulnerabilidad que este enfoque no encontraría:

url: http://www.somesite.com/page.asp?name=kevin&status=live

--- code behind the scenes: ---
string table = "history"
if (status == "live") table = "current"
string sqlCmd = "select * from " + table + " where name = '" + name + "'"

... ¿ves el problema? El último parámetro en su url especifica el estado, y el código simplemente está utilizando un "¿es X o no?" Lógica: no inyecta el valor real en la declaración SQL, por lo que no es vulnerable. Pero el otro parámetro se se inserta en la declaración de SQL sin procesar, lo que lo hace vulnerable al ataque de inyección. Así que mientras:

http://www.somesite.com/page.asp?name=kevin&status=live'

... no tendría un error, esto podría:

http://www.somesite.com/page.asp?name=kevin'&status=live

De manera realista, si va a buscar vulnerabilidades de inyección SQL, debe probar todos los parámetros en la URL, incluso los parámetros que son opcionales y que a veces no se especifican.

Punto final: si tiene acceso al código fuente, es más fácil encontrar este tipo de cosas mirando el código. Básicamente, si estás creando sentencias de SQL sin procesar y luego llamas a EXEC, probablemente tengas problemas.

    
respondido por el Kevin 20.11.2017 - 23:14
fuente
1

La inyección de Sql es inyección sql. Es independiente de tu framework web. Si el desarrollador no ha vinculado los parámetros, son potencialmente vulnerables. Cualquiera de los dos métodos que mencionó es tan probable que funcionen en ASP como en PHP.

Sin embargo, es poco probable que la aplicación ASP clásica esté usando MySql, y es mucho más probable que esté usando un servidor Sql, posiblemente incluso con MS Access. Eso te dará algunas diferencias más sutiles en cómo explotar cualquier vulnerabilidad que puedas encontrar.

    
respondido por el ste-fu 21.11.2017 - 00:18
fuente

Lea otras preguntas en las etiquetas