Mostrando entradas con la etiqueta Auditoria Web. Mostrar todas las entradas
Mostrando entradas con la etiqueta Auditoria Web. Mostrar todas las entradas

Al rico SPAM (Análisis de una extraña whatsapp web)

Buenas amigos, soy Fare9 y hoy os traigo un pequeño análisis de un spam que me han pasado por Whatsapp (típico en estos días).


Aquí dejo el enlace (lo pongo como texto y no como enlace, vosotros ya vereis): http://goo.gl/QJUqfk

Bien, para realizar este tipo de tareas vamos a usar una máquina virtual (por si las moscas), para ello usaré una máquina virtual con Kali Linux (para quien no sepa que es: https://www.kali.org/).
Una vez tengamos la máquina virtual abierta, vamos a empezar el "análisis", para ello como siempre vamos a ponernos los cascos y elegir algo de música ( aquí mi recomendación: https://www.youtube.com/watch?v=06fjeICUKeU ):

    Para empezar y ver un poco algo superficial de la web, usaremos "whatweb" para ver las tecnologías usadas por el servidor:
 "whatweb http://goo.gl/QJUqfk"

 
 Como vemos la URL que teníamos no nos lleva a una web directamente, ya que el servidor nos devuelve un código 301 (Moved Permanently), este nos lleva a otra URL (http://wd8.co/wifi), el cual no nos devuelve un 200 sino un 302 (Found) para finalmente llevarnos a una URL final, http://mobiapps.online/wifi/es/?lang= , la cual esta vez el servidor nos responde con un 200 OK, y con la cual nos quedaremos, de esta URL obtenemos las cabeceras que el servidor envía. Vemos que tenemos el Country, HTML5, el tipo de servidor HTTP (cloudflare-nginx), tenemos el flag HttpOnly... Todo lo que se puede observar ahí en la imagen.
Bien con esto ya conocemos el servidor, ahora vamos a realizar un Who Is, para conocer un poquito más, esta información nos mostrará nombres y lugares:
"whois mobiapps.online"



 Oh, vaya, cuanta información apuntando a Madre Rusia, pero que le vamos a hacer, esta información no vale para mucho, pero por lo menos es gracioso ver de donde pueden venir estas campañas.

Ahora abriremos BurpSuite, el cual usaremos como proxy para navegar a la web (para saber como configurar Burp y el navegador mirad por aquí: https://portswigger.net/burp/help/suite_gettingstarted.html).

Primero en el navegador iremos a la primera URL (la cual nos pasaron por whatsapp), tras lo cual recibimos la siguiente respuesta al hacer click en "Forward" dentro de burp:
 Como vimos en whatweb, recibimos un 301, y podemos observar un Location, que es la siguiente URL que visitará el navegador. Bien aquí la respuesta:
 
Bien, bien, bien, esta vez el Location nos lleva a una URL más interesante, ya que en whatweb es la última que se nos mostró, por tanto veremos que el navegador finalmente nos lleva a una web con una interfaz muy bonita:



 
Nos vienen regalando Wifi gratis para whatsapp siempre que invitemos a 15 amigos... ¿QUIÉN NO QUIERE WIFI GRATIS?.
Bueno sigamos...

Tenemos esos dos botones principales, uno para Invitar Amigos y otro para Activar, vamos a dar click derecho en el primero y dar a Inspeccionar elemento:
Vemos que ambos botones, son referencias a URLs, aunque el atributo href no lleva a ninguna otra URL, sino, que al hacer click en los "botones" se ejecutan distintas funciones de Javascript, vamos entonces a buscar el código javascript (el cual se encuentra un poco más arriba que este código):

Que imagen tan interesante, vemos que el botón Invitar Amigos lleva a fn1 y Activar lleva a fn2, y parece que de cookies anda el juego, la función getCookie y setCookie son funciones que se encuentran arriba de estas dos, pero por lo que parece buscan ese número 15, que tanto nos incita la web. En Invitar Amigos, vemos que se obtiene la cookie, se suma 1, y se establece el valor cada vez que es pulsado el botón, en caso de que c, sea menor o igual a 15, se establece un href = 'whatsapp://send?text=wifi gratis para WhatsApp - ....', el cual es el mensaje que recibí por whatsapp, buscando por google esta extraña sentencia, obtenemos este enlace: https://www.whatsapp.com/faq/es/android/28000012 . La cual nos indica que es una URL para poder interactuar con whatsapp y enviar ese mensaje a cualquier usuario (una especie de API).

Al hacer click en Activar, nos muestra la alerta de "Por favor Invitar al menos ....", se ve que no es tonto el spam tampoco, y si pulsamos "Invitar Amigo" nos lleva a la URL de whatsapp la cual falla, al estar en un navegador y no tener si quiera el whatsapp web abierto. Bien como de cookies anda el juego, vamos a mirar las cookies, para ello usaremos CookiesManager, un plugin de Firefox que nos permite modificar y mirar las cookies que tenemos. Buscaremos por el nombre "invites":

Vaya, vaya, una bonita cookie, la cual se llama invites, y que tras pulsar una vez el botón de "Invitar Amigos" nos muestra el valor 1... Bien pues vamos a modificar, ya que no quiero invitar a ningún amigo haremos algo de trampas y modificaremos a mano el valor por 33 (bonito número y grado).

Damos a Save y marchando. Tras esto recargaremos la página, y qué narices está pasando, empieza a ir de una web a otra, y a otra, y a otra. Y acabamos en:

Que gente tan amable, primero nos ofrecen wifi gratis para el Whatsapp y luego nos dicen que podemos llevarnos un Iphone 7, por el simple hecho de responder unas preguntas... Joe con gente así en el mundo para que necesitamos trabajar.


Bueno hasta aquí el análisis de este SPAM que se va pasando por Whatsapp, parece incluso real, con una web tan currada y tal... Pero nunca hagais caso a estas cosas, nadie regala nada, y si os regalan que sea conocimiento como hago yo con entradas como esta. 
Nos vemos en una siguiente entrada y como ya dije estaré en la conferencia SEC/ADMIN presentando mi herramienta AndroidSwissKnife . 
En un principio doy gracias a la emisora de este mensaje a mi whatsapp mi amiga Irene, y a varios compañeros de trabajo los cuales me han aguantado tanta pregunta sobre estos temas de web, de los cuales casi no tenía ni idea (en especial a I. que me tuvo una semana de preguntas xD).

g0jira: herramienta para pwnear WordPress

¡Saludos!

      Pese a que todavía no está terminado -quedan muchos bugs que subsanar, muchas funcionalidades que añadir, e implementar más exploits (por ahora sólo llevo 60, y todos en plugins antiguos, ninguna en el core)- quería dejar por aquí un ejemplo de las cosas que ya permite hacer g0jira. ( https://github.com/0verl0ad/g0jira )

     ¿Qué es g0jira? Es un -intento de- framework/herramienta/llámalo X  para escanear y explotar vulnerabilidades conocidas en WordPress y sus plugins. WPScan es sin duda una herramienta completa y que cumple bien sus funciones, pero odio depender de las herramientas de terceros cuando se trata de cosas sencillas de implementar. Es por ello que empecé a codear esta herramienta.

    Podríamos dividirla en 3 partes: enumeración, explotación y herramientas. En la parte de enumeración podemos realizar un escaneo de plugins instalados (por defecto viene con un diccionario de más de 14.000 plugins, pero la herramienta permite construir uno nuevo del tamaño deseado), la versión del WordPress (obtenida desde 4 fuentes diferentes: meta generator, readme.html, RSS, y los links de los css y js), o realizar una búsqueda de un determinado plugin entre un listado de dominios (ideal si encuentras un 0-day :) ), listar los usuarios registrados.

   En la otra parte tendríamos el modo "exploit", desde el que lanzar los exploits; y la sección de herramientas, desde la cuales poder generar payloads, ofuscar webshells, etc. Ambas están en continua expansión, y me gustaría mucho que la gente colaborara aportando más :).

  Vamos a proceder a mostrar un pequeño ejemplo de cómo funciona (utilizando lo que hasta ahora está implementado) g0jira, utilizando como escenario WordPressA Lab (descargar desde aqui http://wordpressa.quantika14.com/ ) . Procedamos:

En primer lugar vamos a enumerar los plugins instalados, acotando la búsqueda a 1500 plugins ordenados por popularidad:

perl gojira.pl --enum=dic_populares.txt --url=http://localhost/wordpress --max=1500





    Como podemos observa se han detectado bastantes plugins. En aquellos donde se ha podido extraer la versión ésta se muestra y además cual es la versión más reciente del plugin. En caso de que no coincdan se muestra un enlace al changelog para ver qué ha sido modificado. Además se muestra un link de descarga del plugin en esa versión para poder buscar vulnerabilidades en local por si queremos.

    Nos vamos a centrar en "WordPress Shopping Cart". Probemos si tenemos algún exploit en g0jira para ese plugin y esa versión (o alguna superior). Para ello:

perl gojira.pl --exploit

Seguimos las instrucciones que aparecen en el menú y seleccionamos la opción "3", y escribimos "Shopping Cart" para buscar exploits relacionados:




   Podemos ver que hay un exploit para esta versión. Se trata de un Arbitrary File Upload, o sea, que vamos a poder subir una webshell. En este punto podemos comprobar si en las herramientas que vienen con g0jira encontramos alguna que nos interese. Para ello abrimos una pestaña nueva . y tecleamos:

perl gojira.pl --tools

Seleccionamos la opción para listar todas las herramientas disponibles (opción 1) y vemos que hay dos que nos interesan: HideShell (si queremos utilizar una webshell grande prefabricada, como una c99 que tengamos) y Shell2Me (para crear una webshell pequeña y manejarla desde consola).  En nuestro caso vamos a ejecutar Shell2Me para generar una webshell nueva con nombre esto-no-es-una-shell.php

     Tras generarla (y sin cerrar esa pestaña, puesto que después vamos a controlarla desde ahí) volvemos a la otra pestaña donde teníamos el menú de los exploits.  Y ejecutamos el exploit AFU-0002 (opción 2 y después escribir el codigo del exploit). Nos pediran los datos necesarios (URL, lugar de la shell, nombre que queremos que tenga una vez subida) y después se ejecutará: de tener éxito nos devolverá la ruta donde se encuentra nuestra shell.



  Ahora copiamos la ruta donde está, vamos a la pestaña donde teníamos abierta shell2me y se la pasamos para empezar a controlarla como si de un terminal se tratase:


Un "id" para comprobar que todo marcha bien :)


   Espero que quien lea este post le dé una oportunidad e intente añadir más exploits/herramientas para que entre todos tengamos un g0jira más completo :).


Byt3z!

Profundizando en sqlmap

Escribió Francisco Javier un artículo muy interesante llamado SQL Injection, ¿te han vacunado? donde veíamos la conocida herramienta sqlmap. Esta herramienta tiene muchas opciones y todas ellas muy interesantes, de modo que continuemos profundizando en ellas.

El escenario de pruebas


Para probar la herramienta he elegido el entorno de pruebas DVWA (Damn Vulnerable Web Application). 


La instalación del entorno es bastante sencilla y consiste en descargar el ZIP desde su página Web y requerirá que tengamos PHP y MySQL. Tenéis en este enlace un tutorial con el paso a paso de su instalación.

Esta aplicación Web permite seleccionar el nivel de dificultad al que nos queremos enfrentar desde su apartado DVWA Security, de este modo podemos ajustar el retor a un mayor o menor nivel y así ir afinando nuestras habilidades. En nuestro caso la definiremos en nivel medio para las pruebas que queremos realizar con sqlmap:



Reuniendo información antes de ejecutar la prueba


Una vez configurada la aplicación DVWA, veremos que para acceder es necesario rellenar un formulario, los credenciales de acceso son usuario admin y contraseña password:


Si utilizamos un componente como Web Developer Tools en Mozilla podremos ver las cookies que nos ha establecido el servidor Web al iniciar sesión:


Una vez dentro nos dirigiremos a la sección de SQL Injection y a nada que realicemos alguna prueba veremos que este nivel es fácilmente explotable:


Utilizando la técnica de identificación de columnas basada en ORDER BY veremos que la consulta que se está realizando internamente espera 2 columnas:


Ya con el conocimiento del número de columnas podemos intentar la explotación basada en UNION para obtener información por ejemplo del usuario que ejecuta las consultas y la base de datos a la que se conecta:



Continuando la explotación con sqlmap


Llegados a este punto hemos reunido la siguiente información:
  • Tenemos un motor de base de datos MySQL
  • Estamos almacenando las cookies
    • PHPSESSID (gestiona la sesión que tenemos iniciada)
    • security (gestiona el nivel de seguridad configurado en la aplicación)
  • El parámetro id es vulnerable a SQL Injection y se puede explotar utilizando la técnica UNION query
  • La base de datos a la que se conecta la aplicación se llama dvwa
  • El usuario que realiza las consultas SQL es root@localhost

Con toda esta información podemos afinar la explotación utilizando sqlmap y obtener de forma muy rápida el listado de tablas:


Los detalles de este comando son los siguientes:
  • --cookie permite establecer los parámetros y valores que queremos enviar en la cabecera HTTP Cookie
  • -p permite indicar el parámetro sobre el que se quiere testear la inyección
  • --dbms permite establecer el motor de base de datos para evitar pruebas sobre otros motores
  • --technique permite indicar la técnica de explotación: Boolean-based, Error-based, Union, Stacked querys, Time-based. Tenéis más información en su página de man.
  • -D indica la base de datos que queremos analizar
  • --tables para enumerar las tablas
Nota: Como ya conoceréis la potencia de sqlmap imaginaréis que toda esta información que hemos obtenido de forma manual se podría haber conseguido directamente con la herramienta, sin embargo es importante que seamos cuidadosos y en todo momento controlemos las técnicas que empleamos ya que podríamos dejar la aplicación analizada en un estado inconsistente.

El resultado del comando anterior nos devolverá una enumeración de las tablas:


De modo que continuando con el ejercicio, podríamos realizar un dump de la tabla users utilizando el siguiente comando:


Y en este punto también veremos algo interesante de la herramienta, ya que detectará los hashes de las contraseñas que hay en la tabla y nos ofrecerá realizar un ataque basado en diccionario para romperlos:


Dándonos en este caso un resultado perfecto:



Otras pruebas más allá del escenario DVWA


La siguiente prueba de concepto la realizaré sobre una aplicación Web hecha a medida ya que DVWA no es vulnerable a la explotación que voy a mostrar sin embargo algún escenario al que nos enfrentemos sí podría serlo.

Una vez hayamos detectado un parámetro vulnerable a SQL injection y si los permisos del motor de base de datos y el sistema de ficheros no están bien configurados podríamos incluso llegar a conseguir una shell con el siguiente comando:


Nos solicitará algo de información adicional con el fin de crear la sentencia SQL que nos devolverá una shell:


Seguir este proceso nos devolverá la shell:



Y por ir finalizando la cantidad de posibilidades que nos ofrece la herramienta, no olvidemos que podemos integrarla con nuestra instalación de Tor utilizando el siguiente comando:



En Casa del Herrero Cuchara de Palo



Hola a tod@s


A estas alturas todos sabemos ya lo que es un Cross Site Scripting, una de las vulnerabilidades web más comunes, de hecho ya dedicamos un artículo aquí, titulado iniciación en XSS.


Hace un tiempo encontré un fallo de este tipo, la peculiaridad de este descubrimiento es que el sitio web trata sobre formación sobre JavaScript. Por supuesto avisé al administrador del sitio web del hallazgo para que solucionara la vulnerabilidad lo antes posible.


He querido compartir esta investigación con la comunidad, sobre todo para los menos experimentados en la materia, a modo de ejemplo ilustrativo, siempre con fines educativos y formativos como viene siempre siendo la tónica de este blog. He preferido preservar la identidad del sitio web, pues todavía está en periodo de solución del problema.
 


XSS Reflejado


El evento onerror se activa si se produce un error al cargar una imagen. Por ello muestra un cuadro de alerta y se produce un error al cargar una imagen.


No seáis malos.