La mayoría de la veces nos enseñan a programar, pero no nos enseñan sobre buffers overflow, ni como evitarlos. El siguiente articulo trata sobre una de las técnicas mas explotadas hoy en día.
La inyección SQL es una de las técnicas mas peligrosas que se han descubierto, ya que con una manipulación de una consulta SQL, permite a un usuario logearse como admin o como otro usuario registrado en la página, incluso, permite el borrado de tablas y BD según los privilegios que tenga el user con que se hace la consulta. Esta vulnerabilidad consiste en inyectar, como su nombre lo indica, código en sentencias SQL, debido a fallas a la hora de Programar. Numerosas son las aplicaciones web que son vulnerables a este tipo de ataque, como numerosos son los sitios que fueron atacados usando esta técnica.
Los ejemplos van desde la Casa Blanca, Nasa, ONU, páginas de gobierno, empresas, hasta páginas personales. Lo peor de todo es que incluso programadores expertos crean códigos vulnerables. A pesar de ser esta una técnica de algunos años, sigue teniendo un efecto sorprendente. Fue descubierta por rain.forest.puppy quien despues la uso para hacerse admin de Packetstorm.
Bueno vayamos al 'Hello Wordl' de esta técnica:
Imaginemos que tenemos un formulario en nuestra web con las siguientes Características:
<FORM action="validar.php" method="POST">
Usuario:<INPUT type="text" name="usuario">
Contraseña:<INPUT type="password" name="contraseña">
<INPUT type="submit" name="enviar">
</FORM>
y en validar.php tenemos la consulta:
SELECT * FROM users WHERE User = usuario and pass = Contraseña
Si se introduce pepe como nombre de user y de pass 1234567 y si está registrado en la pág con este user y pass se le consedera el acceso, pero ¿que pasa si el user introduce ' or 1 = 1 -- y de pass lo mismo?, la consulta quedaría.
SELECT * FROM users where User ='' or 1 = 1 -- and pass = '' or 1 = 1 --
Podría permitirle entrar como un usuario registrado, o generar un error con información sobre la consulta hecha.
Hace un tiempo el colega ygonzalez
descubrió una página en la red cubana vulnerable a este ataque.
Primero entramos como usuarios y luego como admins.
Hubiéramos podido Dropear las BD pero, ¿qué ganábamos con eso?.
Buscamos el teléfono del webmaster del sitio y lo llamamos informándole
del fallo.
Una técnica para prevenir este tipo de ataques es
usar funciones como Addslash, si alguien introduce
' or 1 = 1 -- se le añadirán \ con lo que el logeo no será válido
crear usuarios los cuales a la hora de hacer consultas
solo tengan permiso de modificar sus tablas o su BD. Me
he topado que mucha de la gente lo que usa es el root y
en ocasiones hasta sin pass.
Con este pequeño aporte no trato de que se dediquen a ir atacando
cuanta página haya en la red, trato de que se promueva
la cultura informática. Por lo que los anímo a que investiguen
y que compartan con nosotros lo que han aprendido. No soy un experto
ni nada por el estílo, sólo soy un aprendiz, igual que ustedes.
Referencias:
http://es.wikipedia.org/wiki/Inyección SQL
http://www.wiretrip.net/rfp/txt/rfp2k01.txt
No hay comentarios:
Publicar un comentario