Comprobación del código de prueba de penetración por primera vez

3

En el siguiente escenario, el sitio web permite a los usuarios cargar un documento de Excel que contiene información que se cargará en la base de datos y se almacenará como valores a los que el usuario podrá acceder posteriormente. Estoy intentando cargar una inyección de SQL con los siguientes parámetros.

"INSERT INTO Uploads VALUES ('Name'); DROP TABLE Upload --"

Esta ejecución se está cometiendo en ASP.net EF 6. Mi pregunta es que, al utilizar este tipo de inyección, simplemente produce un error sobre la sintaxis incorrecta. ¿Alguien puede decirme si esta inyección está formateada incorrectamente para penetrar, o si esta es una medida de seguridad real del servidor SQL 2012?

Actualización: el error real que estoy recibiendo es cmd.ExecuteNonQuery(); incorrecto Sintaxis cerca ('Nombre')

    
pregunta Joshua 23.01.2017 - 16:37
fuente

1 respuesta

3

Sin ver el código, es imposible decir con seguridad lo que está sucediendo. Según mi propia experiencia, sospecho que lo siguiente está sucediendo.

Supongamos que tiene una pieza de código vulnerable que define una consulta para ser ejecutada en la base de datos como sigue:

string commandText = "SELECT id from users where name = '" + tb_Name.text + "';

Si luego pasas tu cadena de ataque, commandText se convertirá en:

SELECT id from users where name = 'INSERT INTO Uploads VALUES ('Name'); DROP TABLE Upload --'

Si observas detenidamente esta cadena sql, puedes ver que la primera cadena que interpreta es INSERT INTO Uploads VALUES ( y luego se encuentra con Name , que no es una cadena, por lo que es muy probable que estés viendo el error que ves.

Si, en cambio, cambia la cadena de ataque a:

'; DROP TABLE Upload;--

El commandText (en este ejemplo específico) se convertiría en:

SELECT id from users where name = ''; DROP TABLE Upload;--'

Lo que sería un permiso válido de detección de ataques que se configuró correctamente.

De todos modos, espero que esto ayude a aclarar las cosas. La mejor manera de familiarizarse con esto es pasar unos años realizando el desarrollo web de pila completa. Puede saltar a mitad de la carrera, pero le faltará la profundidad de conocimiento que a menudo se requiere para ser un buen evaluador de bolígrafos.

    
respondido por el Abe Miessler 23.01.2017 - 17:58
fuente

Lea otras preguntas en las etiquetas