Inyección líder

0

¿Existen explotaciones conocidas donde una consulta del formulario:

select foo from bar where id = 6

se puede convertir en:

select * from select foo from bar where id = random stuff

Está claro que una aplicación mal formada podría fácilmente permitir la inyección en el punto de la consulta donde está el literal 6 . yo tengo un caso en mano donde se hizo eso, pero también el extra " select * from " se insertó en la parte delantera de la consulta en la Al mismo tiempo fue atacado el literal al final. me pregunto Si esto es un problema conocido genérico o si hay una clase de aplicaciones que son vulnerables de esta manera.

    
pregunta user46602 14.05.2014 - 16:37
fuente

2 respuestas

1

Como mencionas si la entrada no está validada, agregar lo que quieras como ID sería trivial.

Con respecto a 'seleccionar * de' antes de la consulta principal, entonces sí, esto podría ser posible.

Diga, por ejemplo, que tiene

http://domain.com?column=foo&id=6

Y que estabas usando $ _GET ['columna'] (asumimos PHP aquí pero similar para otros idiomas) para determinar qué columna requieres, entonces todo lo que la persona debería hacer es adaptar la url para que sea algo como:

http://domain.com?column=*%20from%20select%20foo&id=6

Si usaste lo siguiente para crear el SQL:

$sql = 'select ' . $_GET['column'] . ' from bar where id = ' . $_GET['id'];

SQL equivaldría a la siguiente cadena:

select * from select foo from bar where id = 6

Por supuesto, esto sería un gran error por parte del programador, pero he visto mucho peor en el pasado. Para mitigar esto, el programador debe verificar si el nombre de la columna está dentro de una lista blanca. Si es bueno, si no, no respetas la solicitud ni devuelves la columna estándar.

Con respecto a cualquier clase de aplicación que sea susceptible a tal ataque. Su mejor opción sería examinar algunos de los sitios de tipo de divulgación de vulnerabilidades. Sin embargo, espero que los principales culpables sean las páginas de búsqueda dentro de las aplicaciones.

    
respondido por el Peter 21.05.2014 - 02:49
fuente
0

solo si está disponible en aplicaciones del lado del cliente, si lo hace en el lado del servidor, lo único que es peligroso es XSS, que se puede prevenir "preparando" las declaraciones o usando DOP.

validar lo que se pone en el formulario (es decir, con PHP) también es un buen movimiento, prohibir los caracteres especiales como *, & lt ;, & gt ;,% etc. de campos que no los necesitan siempre es un buen movimiento.

    
respondido por el Lighty 20.05.2014 - 14:30
fuente

Lea otras preguntas en las etiquetas