injeccion sql
Seguridad Informática
Búsqueda y explotación de vulnerabilidades de sitio web
Miguel Ángel Hernández Rodríguez
Octavio Arturo Salas Esquivel
Lucia González
Fecha:14/09/2015
INTRODUCCION
En este documento se detalla cómo encontrar y explotar la vulnerabilidad de SQLinjection en un sitio basado en PHP.
El ataque se divide en tres pasos:Fingerprinting: Que es la recopilación de información y de las tecnologías utilizadas en el sistema.
Detección y explotación de SQLinjection: en este apartado se ve cómo funciona y como explotarla.
Acceso a la página de administrador y ejecución de código. En este ultimo pasos se accede al sistema operativo y se ejecutan instrucciones al mismo.
DESARROLLO
Está será la página en que haremos elpentest es una herramienta desarrollada por hacker para el entrenamiento en las diferentes técnicas de pentestin a sitios web para mas información pueden acudir a la siguiente dirección https://pentesterlab.com/exercises/:
Primero haremos un information gathering, para realizarlo podemos usar telnet o netcat
telnet paginaweb.com 80
GET / HTTP/1.1
host:paginaweb
ó
netcatpaginaweb.com
GET / HTTP/1.1
host:paginaweb
Como podemos observar ahí tenemos la versión de apache Ahora veamos un poco de teoría, supongamos que estamos en una pagina de noticias y tenemos 3 páginas con noticias estas serían las 3 urls.http://www.web.com/noticia.php?id=1 <-- noticia 1http://www.web.com/noticia.php?id=2 <-- noticia 2http://www.web.com/noticia.php?id=3 <-- noticia 3elcódigo php de esa pagina para cargar las noticias sería algo así<?php$id = $_GET["id"];$resultado = mysql_query("select * from noticias where id=".$id);$fila = mysql_fetch_assoc($reultado);//nos da la informacion de la noticia de la consulta?>Ahora pasando al material que tenemos para trabajarsi ponemos asi ----> http://www.web.com/noticia.php?id=1' se va a ejecutar esto ---> select * fromnoticias where id = 1'pero la sintaxis de esta peticion sql es incorrecta por la comilla ' y la base de datos nos dara un errorYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server versionfor the right syntax to use near ''' at line 1.este error puede o no puede ser visible depende de la configuracion del phpaqui el ejemplo del error de SQL syntax de nuestraweb
IMPORTANTE! El valor que está en la url hace un eco directamente en la consulta y es considerado como un integer, estonos permite hacer una consulta a la base de datos una operación básica matemáticaes decirhttp://www.web.com/noticia.php?id=2-1 <--- esto sería comoselect * from noticias where id=2-1 entonces el la noticia 1 será mostrada en la urlPor ejemplo en nuestra paginatenemos http://192.168.1.88/cat.php?id=3
y también http://192.168.1.88/cat.php?id=2
Veamos que pasa cuando hacemoshttp://192.168.1.88/cat.php?id=3-1
Aqui vemos como al hacer la operacion matemática 3-1=2 == http://192.168.1.88/cat.php?id=2explotando sql injections con UNIONPara hacer la sql injection (a mano nada de usar programas como havij ó sqlmap a menos que seas un lamer de primera, ó a menos que yasepas hacer esto por ti mismo no hay ningun problema en utilizar herramientas que te pueden automatizar el proceso, y ademas ya sabes que es lo que realmente esta pasando en tu ataque) necesitamos encontrar el numero de colimnas para ejecutar unionsi ponemoshttp://192.168.1.88/cat.php?id=2 union select 1,2
en la url aparecen varios %20 ese es el del espacio y el navegador lo poneautomáticamente, ahi podemos ver que nos da información interesantelo que ha pasado es lo siguiente:select id,nombre,fecha,foto from noticias where id=1 union select 1,2 es decir hicimos una consulta donde estamos requiriendo 2 campos sin embargo la tabla tiene 4 campos, no hay que confundir que a una tabla podemos hacer la consulta a 1 solo campo con esto que estamos haciendo, en este caso estamos tratando...
Regístrate para leer el documento completo.