RSS |

Blog de Omar

Just another WordPress weblog

Advertisement

Posts Tagged ‘ sqlmap ’

Después de 09 meses de inactividad en el Blog, me he decidido volver a escribir. De hecho existen muchos motivos por los cuales no he escrito pero de eso no pienso escribir – al menos no en este POST – pero hoy domingo de resurrección resucitamos el Blog también. 

Hace poco más de dos (02) meses empecé a investigar un nuevo tema de seguridad, lo inicié ya que me encontré con la vulnerabilidad realizando un servicio de Ethical Hacking que me contrataron y me pareció muy interesante; interesante para postearlo, interesante para explicarlo detalladamente y más interesante aún, explicar como automatizar un ataque de este tipo. ¿Y qué fue lo que me encontré? me encontré con una Inyección SQL a través de un Captcha, así que de eso va tratar este POST.

Antecedentes

  • Sería buena idea que revises los POST de inyecciones que he publicado antes: Clase 1, Clase 2, Clase 3, Clase 4
  • Vamos a utilizar MySQL como motor de Base de Datos pero como ya saben, las inyecciones de código SQL nada tiene que ver con el motor de BD.
  • Vamos a utilizar Python para automatizar el ataque

 

1. Identificando la vulnerabilidad

Primero vamos a situarnos en el escenario, he replicado el escenario vulnerable y sobre este nos vamos a situar. Es un formulario de envío de comentarios, el formulario cuenta con un código CAPTCHA de seis (06) caracteres que obviamente varia cada vez que se accede a la página que contiene el formulario.

1

A) No funcionan las herramientas de Vulnerabilidades

Repito, no funcionan las herramientas de búsquedas de vulnerabilidades, EXACTO no funcionan ni van a funcionar.

¿Por qué no funciona?

  • El formulario envía el comentario y genera en background un query SQL sólo si se ingresa adecuadamente el código Captcha.
  • Si se ingresa o se envía por el método POST cualquier otro caracter que no coincida con lo que muestra la página, no se genera el INSERT y por consecuencia no hay forma de interactuar con la BD.
  • Si no interactuamos con la base de datos  no se puede identificar INYECCIONES SQL (eso debería estar claro si estas leyendo este post)

A continuación les pongo los resultados del análisis de vulnerabilidades que realicé con dos herramientas conocidas: Acunetix y W3AF, como verán no detectan ningún tipo de inyección SQL.

2

3

 

B) Pruebas Manuales de Identificación

Gran parte de las pruebas que se realizan en un proceso de Ethical Hacking son pruebas manuales. No se puede pretender o menos creer que las herramientas van hacer nuestro trabajo e identificar todas las vulnerabilidades que pueden haber en una página web.

Las herramientas sólo nos ayudan a identificar vulnerabilidades, lean bien por favor, “AYUDAN” y este post es un buen ejemplo para hacerlo notar.

En este caso vamos a realizar una inyección del tipo BLIND SQLi (inyección sql a ciegas) a través del método POST en la variable “nombre” del formulario, para identificar un BLIND SQLi se hace uso de sentencias condicionales del tipo OR, AND, IF u otra palabra reservada y observar el comportamiento de la página web, además, BLIND SQLi no arroja errores de sentencia en el query.

Nuestro PAYLOAD a colocar en la variable “nombre” es el siguiente: [ omar'|| (if(2>1, sleep(10),0)) ||' ], lo que debe ocurrir si es que el query se ejecuta es que la página demora más de 10 segundos en volver a cargar, debido a que la función SLEEP hará que la base de datos tarde 10 segundos en ejecutar el query.

Es importante remarcar que el PAYLOAD correcto no sirve si es que no se ingresa el Captcha correcto, si no me creen inténtelo.

 

4

 

Aquí dejo los HEADERs de la petición que se envía, en la cuadro inferior se muestran las variables en formato urlencoded.

5

 

2. Realizando y explicando el ataque

Ahora que ya sabemos a los que nos enfrentamos -  un formulario con Captcha – y que sabemos que es vulnerable con un Blind SQLi, debemos automatizar el ataque y extraer información de la(s) base(s) de dato(s), tablas y registros del servidor web a los que tengamos permisos.

A) ¿Por qué no podemos utilizar SQLMap?

Muy bien, entonces utilizaremos la herramienta por excelencia verdad? SQLMap es la solución para las inyecciones. Si pensaste que SQLMap sería la solución debes dejar este blog de inmediato – no mentira es broma – pero toca analizar un poco porque no se podría utilizar SQLMap ni ninguna herramienta que automatiza las inyecciones de código SQL. Vamos a analizarlo paso por paso para que se entienda.

image

 

La imagen superior resume el motivo por el cual no podemos utilizar SQLMap para realizar el ataque, si es que no se entendió la imagen superior aquí lo vuelvo a resumir:

  • SQLMap realiza múltiples envíos consecutivos con las variables que le indiquemos a través de la opción  “- – data”.
  • En cada envío que hace SQLMap debería enviar el código Captcha para realizar la inyección SQL.
  • SQLMap no tiene como saber cual es el código Captcha, ya que este varía después de cada envío realizado previamente
  • Además, algunos formularios realizan un cierre de sesión después de cada envío (creando uno nuevo) y eso dificulta la inyección porque cada sesión esta asociada al código captcha.

Listo!!! con eso queda totalmente explicado el motivo porque el cual no podemos utilizar SQLMap.

 

B) Realizando el ataque de Inyección

Después de lo explicado, nos toca analizar como realizar el ataque si es que hasta ahora ninguna herramienta parece que nos va servir. De pronto, alguien se puede estar preguntando que no es necesario automatizar el ataque ya que con el siguiente PAYLOAD [ omar'|| (if(2>1, sleep(10),0)) ||' ] queda totalmente evidenciado que la página web es vulnerable pero aquí les dejos algunos motivos por los cuales debemos buscar la forma de automatizar el ataque:

  • Evidenciar y mostrar evidencia clara de que la página es vulnerable, de hecho me pagan por eso y toca hacerlo. No es lo mismo decir: “la página es vulnerable y hemos identificado N cantidad de usuarios” versus “la página es vulnerable pero no hemos podido obtener información”. El riesgo de seguridad queda explicado mejor en el primer caso.
  • Automatizar el ataque es el único camino, hacerlo manualmente tardaría tanto como tardaría la selección peruana de futbol en llegar a un Mundial. Además no me pagan por horas, sino por resultados.
  • Y el motivo más importante, porque me da la gana y es un buen reto. En especial cuando toca analizar diversas imágenes Captcha con diferentes tipos de complejidad.

Entonces lo que vamos a realizar para resolver este problema es un script en Python que realice lo siguiente:

  • Realizar una solicitud a la página web del formulario para obtener la imagen que contiene el Captcha y descifrarlo.
  • Obtener la cookie de la petición de la página web, la cookie se asocia con la imagen Captcha obtenida.
  • Enviar las  variables obtenidas por el método post, las variables enviadas incluyen: la cookie, el captcha descifrado y el PAYLOAD identificado.
  • Realizar la inyección Blind SQLi para obtener caracter por caracter.
  • El script debe ser interactivo y realizar todos los pasos previos en cada solicitud, es decir, lo que SQLMap no hace.

6

 

Hasta el próximo post!!! y saludos a todos.

Popularity: 15% [?]

parchando windowsDespués de un buen rato de no publicar noticias en el blog decidí aprovechar el feriado y el fin de semana largo para dedicarle algo de tiempo a mi querido y fiel acompañante, mi blog.

La semana pasada algunos chicos me preguntaron porque sólo se suele explotar Apache, MySQL y demás software libres, que les daba la impresión de que el software es más vulnerable comparando las mismas con herramientas o aplicaciones de pago; lo cierto es que tenían razón, ya que es más fácil utilizar software libre para las pruebas pero definitivamente el software libre y el software propietario son igual de vulnerables y hasta me atrevería a decir (con cierto corazoncito Open Source) que el software propietario es más vulnerable que el libre y baso mi teoría en la cantidad de boletines de seguridad que envía Microsoft de manera periódica.

Dediqué gran parte de mi domingo (Wuju!!! que divertido) haciendo un video tutorial que muestre los diferentes métodos y técnicas para vulnerar un Microsoft SQL Server 2005 corriendo sobre un Windows 2003 Server y lo hice porque hay poca información en internet sobre este tema y porque aun veo muchas empresas en las cuales he podido vulnerar este motor de base de datos pero sobre todo porque me resultó divertido hacerlo a través de SQL Injection.

El video tiene el siguiente contenido:

  • Módulos auxiliares MSSQL en Metasploit
  • XP_CMDSHELL para apoderarse del sistema operativo
  • Exploits y meterpreter para acceder al sistema operativo
  • Explotación de vulnerabilidad MS09-004 a través SQL Injection
  • Vulnerando SQL Server: XP_CMDSHELL – Metasploit

La presentación mostrada en el video tutorial pueden descargarla: [AQUÍ]
Los comandos utilizados en el video tutorial pueden descargarla: [AQUÍ]

*****************************************************************

El fin de semana estuve algo pensativo y melancólico recordando la música que escuchaba cuando hacia las tareas del colegio, rebusque entre la música que solía escuchar y encontré esta canción que es extremadamente buena, la comparto para aquellos que están hartos de escuchar regueton y puedan encontrar algún consuelo para sus oídos con Pearl Jam.

Popularity: 28% [?]

what-is-a-sql-injection-attackTenía planeado realizar un video tutorial sobre la explotación avanzada de aplicaciones web, mostrando hasta donde se puede lograr penetrar bases de datos y sistemas operativos a través de Inyecciones SQL (SQL Injection);  he tratado de colocar en el video no sólo como hacerlo sino explicando algo de teoría de sentencias SQL con el objetivo de no aprender de paporreta las cosas ni sólo utilizar herramientas, sino también, con el objetivo que puedan ejecutar inyecciones SQL avanzadas de manera manual y utilizar su ingenio e imaginación lo máximo posible. Además, ¿alguien puede negar que hacerlo manualmente no es más placentero que sólo ejecutar unos cuantos comandos? es más divertido entender como funciona y hacerlo manualmente.

Las inyecciones SQL es en la actualidad la vulnerabilidad más significativa y crítica que se encuentran en aplicaciones web, además está reflejada en el OWASP TOP TEN 2010, donde se enumeran las principales vulnerabilidades comparadas contra el TOP TEN del año 2007.

toptenowasp2011

EL VIDEO CONTIENE:

  • Análisis de vulnerabilidades avanzado de aplicaciones web con ACUNETIX
  • Teoría de SQL Injection avanzado: sentencias:UNION, INTO OUTFILE, INTO DUMPFILE
  • Inyección de PAYLOADS a nivel del sistema operativo de la base de datos
  • Automatización de ataques sql injection avanzado con SQLMAP y METASPLOIT

Este video está dirigido a los administradores de servidores, desarrolladores de aplicaciones web y administradores de seguridad de información, quienes deben revisar las vulnerabilidades de aplicaciones web antes de poner en producción un nuevo sistema de información web. Espero les sea de utilidad el videotutorial.

MATERIAL DEL VIDEO:

 

Popularity: 32% [?]

Tor_project_logo_hqPasar desapercibido ha sido algo que siempre me ha caracterizado, al menos eso creo, me resulta empalagoso, se me pone la piel de gallina y hasta siento vergüenza ajena cada vez que observo los torpes intentos por llamar la atención de aquellos chicos que decidieron enamorarse perdidamente, perdedoramente diría yo, de aquella chica que le presta la misma atención que se le presta a los desafortunados vendedores de biblias o empadronadores de censo.

Sin embargo, pasar caleta por la vida no es del todo una buena idea, siento que despilfarre tiempo valioso cuando hacía cosas buenas pero que debido a la desafortunadamente decisión nadie se enteraba, pasar solapa es, en todo caso, sentirse y estar más pintando que un cuadro.

Hace algún tiempo decidí buscar el equilibrio correcto entre un galifardo figuretti y un chancón primer puesto de colegio, el producto de esa mezcla se encuentra en este blog y en los videos de Youtube, que debo reconocer que la primera vez que los vi sentí que debía borrarme olímpicamente del planeta.

Finalmente, el video tutorial ha sido realizado con la finalidad de mostrar como navegar de manera anónima por Internet y mostrar como se hacen ataques de hacking sin dejar huellas ni rastros. Espero les sirva el video.

El contenido del video es:

  • Instalación y configuración de: TOR, POLIPO y VIDALIA (Descargar pasos de instalación AQUI)
  • Pruebas de navegación anónima con TOR y POLIPO, verificación con la herramienta ETHERAPE
  • Ataques SQL Injection de manera anónima a un servidor web
  • Presentación PDF mostrada en el video tutorial (Descargar AQUI)

 

Popularity: 36% [?]