Hacked | San Juan de Argentina


País: US [United States]
Estado ActualHackeada
Método de Intrusión: SQL INY BÁSICO
HerramientasGoogle,
Antecedentes: A continuación muestro unas pocas imágenes que describen exactamente el proceso de SQL inyection básico.
Bueno la mayoría seguramente ha realizado SQL INY, pero puede ser que alguien no!!, así que el sql inyection lo que trata es de alterar la consulta que la aplicación web (en realidad cualquier aplicación que trabaje con bases de datos), hace al motor de base de datos cualquiera que este sea (MYSQL, SQL SERVER, POSTGRESQL, etc, etc...).

El propósito es inyectar en la consulta caracteres de forma que la respuesta que se tenga será siempre un true.

Para explicarlo un poco mejor, en el caso de este sitio.
No importa el nombre de la base, tampoco, el nombre de las tablas, peor aún el nombre de los campos, más se trabaja pensando de manera genérica es decir teniendo en mente la consulta siguiente:

select * from users where login="$login" and password="$pass"

Generalmente el sql anterior es que se utiliza para validar un usuario en un sitio y específicamente en este asumimos que es el que utilizaron... pues bien...

Miran la imagen siguiente donde se encuentra el formulario de validación:
By Ni0
Como seguramente lo han notado después de ingresar el usuario y contraseña que la página me indica, 2 variables sin importar los nombres reciben esos valores e ingresan en la consulta que mostramos anteriormente.

Si el valor de la contraseña es: "||1="1, es decir $pass="||1="1

La consulta sql se transforma en lo siguiente:
select * from users where login="$login" and password=""||1="1"

Separando un poco esta consulta y notando que no importa lo que se haya escrito en el campo login tenemos lo siguiente:

select * from users where login="$login" and password="" ||1="1"

En lenguaje natural la consulta diría, seleccione todos los usuarios de la tabla users cuando el nombre de usuario o login sea igual a $login y el campo password sea igual a vació [o 1 =1 ].

Por lo que siempre se tendrá un true como resultado de la consulta!!
Aplicando lo descrito al sitio que estamos relatando tendremos como resultado
By Ni0
Se ha saltado la validación y hemos ingresado como el primer usuario de la tabla users que en este caso tiene privilegios de super usuario.

Después de publicar una noticia tenemos lo siguiente
http://www.visitedifuntacorrea.com.ar/noticias_ver.php?id=34
by Ni0
Como nos protegemos ??
Hay algunas recomendaciones que podemos dar:

  • No permitir caracteres extraños como " || ' + - * ¨´ ` 
  • No dejar que las consultas duren tiempos muy largos, en un sitio incluso indicaban que la consulta para un usuario normal podía durar 10 min.
  • No realizar la validación únicamente con JS si no al momento de recibir las variables.

No hay comentarios:

Publicar un comentario