viernes, 28 de septiembre de 2012

Vulnerabilidades en Joomla (II). Identificando

En el último post dejamos joomlascan ejecutándose después de darle una pequeña ayuda para pudiera identificar la existencia de algún sistema que interceptaba los errores 404.
Poco a poco joomlascan empieza a escupir el resultado de los diversos test que está realizando.
El siguiente paso es tratar de extraer la máxima información de su huella digital (fingerprint).

## Fingerprinting in progress ...

~Generic version family ....... [1.5.x]

~1.5.x en-GB.ini revealed [1.5.12 - 1.5.14]

* Deduced version range is : [1.5.12 - 1.5.14]

## Fingerprinting done.


## 7 Components Found in front page  ##

 com_wrapper com_xmap
 com_phocadownload com_content com_ckforms
 com_weblinks com_user

Nos dice, para empezar que se trata de un joomla! 1.5.12-14 y que ha localizado desde la front-page siete componentes que enumera a continuación.

Bueno, pues ya tenemos bastante idenficado el sistema. Sigamos analizando la salida

Empieza a buscar las vulnerabilidades del sistema. :

Vulnerabilities Discovered
==========================

# 1
Info -> Generic: htaccess.txt has not been renamed.
Versions Affected: Any
Check: /htaccess.txt
Exploit: Generic defenses implemented in .htaccess are not available, so exploiting is more likely to succeed.
Vulnerable? Yes

# 2
Info -> Generic: Unprotected Administrator directory
Versions Affected: Any
Check: /administrator/
Exploit: The default /administrator directory is detected. Attackers can bruteforce administrator accounts. Read: http://yehg.net/lab/pr0js/view.php/MULTIPLE%20TRICKY%20WAYS%20TO%20PROTECT.pdf
Vulnerable? N/A

# 3
Info -> Core: Missing JEXEC Check - Path Disclosure Vulnerability
Versions effected: 1.5.11 <=
Check: /libraries/phpxmlrpc/xmlrpcs.php
Exploit: /libraries/phpxmlrpc/xmlrpcs.php
Vulnerable? No

La información sobre cada vulnerabilidad tienen todas el mismo formato.

  • Info: Descripción de la vulnerabilidad
  • Version afectada:  Valor de la version o Any para todas
  • Check: literal de la URL que detecta esa vulnerabilidad
  • Exploit: Información sobre la posibilidad de explotar la vulnerabilidad
  • Vulnerable: Sí, No, No puede ser determinado [N/A]

Y así tenemos hasta 193 análisis.  Veamos el fin del scan


# 193
Info -> Component: com_KSAdvertiser Remote File & Bypass Upload Vulnerability
Versions Affected: any
Check: /index.php?option=com_ksadvertiser&Itemid=36&task=add&catid=0&lang=en
Exploit: /index.php?option=com_ksadvertiser&Itemid=36&task=add&catid=0&lang=en
Vulnerable? N/A

There are 5 vulnerable points in 193 found entries!

~[*] Time Taken: 8 min and 25 sec
~[*] Send bugs, suggestions, contributions to joomscan@yehg.net

Que nos dice que ha encontrado 5 vulnerabilidades. Son las siguientes:

# 1
Info -> Generic: htaccess.txt has not been renamed.
Versions Affected: Any
Check: /htaccess.txt
Exploit: Generic defenses implemented in .htaccess are not available, so exploiting is more likely to succeed.
Vulnerable? Yes
# 7
Info -> Core: Admin Backend Cross Site Request Forgery Vulnerability
Versions effected: 1.0.13 <=
Check: /administrator/
Exploit: It requires an administrator to be logged in and to be tricked into a specially crafted webpage.
Vulnerable? Yes
# 12
Info -> CorePlugin: TinyMCE TinyBrowser addon multiple vulnerabilities
Versions effected: Joomla! 1.5.12
Check: /plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/
Exploit: While Joomla! team announced only File Upload vulnerability, in fact there are many. See: http://www.milw0rm.com/exploits/9296
Vulnerable? Yes
# 27
Info -> CoreComponent: com_mailto timeout Vulnerability
Versions effected: 1.5.13 <=
Check: /components/com_mailto/
Exploit: [Requires a valid user account] In com_mailto, it was possible to bypass timeout protection against sending automated emails.
Vulnerable? Yes
# 31
Info -> Component: Seminar com_seminar Blind SQL Injection Vulnerability
Versions effected: 2.0.4 <=
Check: /components/com_seminar/
Exploit: /index.php?option=com_seminar&task=View_seminar&id=1+and+1=1::index.php?option=com_seminar&task=View_seminar&id=1+and+1=2
Vulnerable? Yes

A partir de aquí, si somos los administradores del sistema ya sbaemos que medidas tomar y si estamos haciendo un test de penetración debemos investigar los exploits de estas debilidades

Pero como en esta caso somos los administradores veremos que medidas  tomar:

#1: Deberemos renombrar el fichero htacces como .htaccess
#7: Como estamos en una versión superior no es necesario tomar medidas.
#12: Igual que el anterior. Subir de nivel.
#27. Subir de Nivel 
#31. Subir de Nivel.

Para finalizar he aquí algunos de los check que ejecuta joomlascan:

  • /index.php?option=com_content&view=%' +'a'='a&id=25&Itemid=28
  • /index.php?option=com_poll&task=results&id=14&mosmsg=DOS@HERE<<>AAA<><>
Este es realmente espectacular:
  • /index.php?option=com_acajoom&act=mailing&task=view&listid=1&Itemid=1&mailingid=1+UNION+SELECT+1,1,1,1,concat(0x1e,username,0x3a,password,0x1e,0x3a,usertype,0x1e),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1+FROM+jos_users+where+usertype=0x53757065722041646d696e6973747261746f72+LIMIT+1,1--
  • /administrator/components/com_dadamail/config.dadamail.php?GLOBALS[mosConfig_absolute_path]=
  • /index.php?option=com_jeguestbook&view=../../../../../../../../etc/passwd

Si analizando el access.log de vuestro servidor encontrais peticiones de este tipo, (y seguro que las encontrareis) no os quepa duda estan atacando vuestro sistema.

En próximos post veremos que medidas preventivas tomar para hacer un sistema joomla más robusto y que hacer si por no haber tomado medidas o, a pesar de haberla tomado, nuestro sistema se ha visto comprometido.

Aunque no será en los próximos post, que dedicaremos a otros temas.

martes, 18 de septiembre de 2012

Vulnerabilidades en Joomla (I). Identificando

Joomla! es un de los Gestores de Contenidos (o CMS, como se les conoce de sus siglas en inglés), mas populares y potentes tanto por su diseño como por la cantidad de extensiones que se le pueden instalar.
Su éxito hace que sean un objetivo goloso para aquellos que se dedican a buscar vulnerabilidades. En este post y en el siguiente veremos como detectar vulnerabilidades en Joomla y las medidas a tomar para robustecerlo.

Análisis de vulnerabilidades. 
Para realizar este análisis usaremos JoomlaScan que es un programa diseñado para encontrar vulnerabilidades en webs realizadas con Joomla!.

Sus características son las siguientes:
  •     Realizado en lenguaje Perl
  •     Actualizaciones Online sin necesidad de descarga de nuevo software.
  •     Analisis completo.
  •     Detecta vulnerabilidades como: inyeccion SQL, LFI, RFI, XSS entre otros.
  •     Basado en OWASP 
Hay que recalcar que este programa está exclusivamente diseñado para buscar vulnerabilidad específicas en el  código de Joomla! por lo que no está de más que se ejecute otras herramientas de scaneo más genéricas: para servidores web, php, mysql....

 En este post usaremos la versión de consola aunque existe una versión de ventanas.

Su sintaxis, que puede variar de versión a versión es muy sencilla y en su forma más simple es:

joomla.pl -u http://www.sitioasecanear.com


 ..|''||   '|| '||'  '|'     |      .|'''.|  '||''|.
.|'    ||   '|. '|.  .'     |||     ||..  '   ||   ||
||      ||   ||  ||  |     |  ||     ''|||.   ||...|'
'|.     ||    ||| |||     .''''|.  .     '||  ||
 ''|...|'      |   |     .|.  .||. |'....|'  .||.


=================================================================
OWASP Joomla! Vulnerability Scanner v0.0.4
(c) Aung Khant, aungkhant]at[yehg.net
YGN Ethical Hacker Group, Myanmar, http://yehg.net/lab
Update by: Web-Center, http://web-center.si (2011)
=================================================================


Vulnerability Entries: 652
Last update: Avgust 12, 2012

Use "update" option to update the database
Use "check" option to check the scanner update
Use "download" option to download the scanner latest version package
Use svn co to update the scanner and the database
svn co https://joomscan.svn.sourceforge.net/svnroot/joomscan joomscan


Target: http://www.xxxxxxxxxxxxxxxxxx.net

Server: Apache/2.2.20 (Unix) mod_ssl/2.2.20 OpenSSL/0.9.7a mod_bwlimited/1.4
X-Powered-By: PHP/5.2.17


## Checking if the target has deployed an Anti-Scanner measure

## WARNING ##

[!] The target responds with 200 for every 404 request
[!] Activating anti-200 Bypass ...  Please wait.


[!] Damn, unable to bypass! The target emits random strings.
[!] I need your help.

[!] Enter strings in common or valid regular expression
    when you see after requesting the two urls:
    http://www.
www.xxxxxxxxxxxxxx.net/a_sdf and http://www.xxxxxxxxxxxxxx.net/hj_kl
    e.g Page Not Found, \d{10,15}

 >>



Después de darnos algunas instrucciones sobre como actualizar el scanner empezamos a ver la información que suministra.


En primer lugar nos indica que el sitio está ejecutándose es un sistema Unix con Apache 2.2.20 y PHP 5.2.17

Con esta información ya podríamos deducir si se trata de un sistema actualizado o no. Sorprende saber la cantidad de hosting que corren con versiones no ya antiguas, si no algunas veces incluso fuera de mantenimiento.

Luego intenta detectar medidas de seguridad. En el último post de esta serie hablaremos de ellas cuando tratemos el tema de fortalecer nuestro sitio web en Joomla!

Vemos como en este caso como recibe un codigo de retorno 200 cuando espera un código de retorno 404 (página no encontrada)

El sitio web analizado (del que soy propietario) tiene instalado un plugin de joomla!   que intercepta la respuesta de página no encontrada y devuelve a la portada. Se trata una medida básica de seguridad y ya volveremos a ello.

La portada no es estática en su totalidad y eso  causa cierta confusión al programa  por eso te pide que le suministres algún valor fijo en tu página para poder seguir.  Lo único que tenemos hacer copia y pegar los dos urls que te en el navegador e indicarle algún valor fijo de la portada.


Y nosotros seguiremos en el próximo post analizado el resultado del scan. 

sábado, 8 de septiembre de 2012

Ayuda a un empresario

No, no es coña.

Algunos pensasarán.... ¿no les ayuda el gobierno lo suficiente? encima va este tío y me pide que les ayude. Pues va en serio, pero no es un empresario europeo si no un empresario de paises pobres y además gente que es tal su pobreza que están fuera de los circuitos tradicionales de créditos.

Entonces, dirán otros, ¿se trata de dar dinero a una ONG?.

Tampoco. Se trata de prestarlo.

Y ya una vez despertada la curiosidad voy a explicarlo mas detalladamente.

Es importante el concepto: tú no “donas” dinero, sino que lo prestas. El receptor te lo va devolviendo según los plazos establecidos (el tiempo del crédito suele ser de entre 3 meses y un año) y luego haces lo que quieras con el dinero: recuperarlo o prestárselo a otro. No es caridad, es apoyar a una persona que está trabajando duro para salir de la pobreza y hacerlo con dignidad.
 
La tasa de créditos incobrados es muy baja. Existe el riesgo, por supuesto, como en todo préstamo, pero en general se trata de gente muy responsable a la hora de cumplir con sus compromisos.

Y.. ¿quien canaliza este dinero?.
 Por medio de una organización sin ánimo de lucro llamada Kiva, esta es su página web

Si te decides a financiar a alguien eres avisado puntualmente de cada devolución y se crea una página web de acceso público con tu historial de préstamos.  Aquí se puede ver la mía  que es bien bonita, al menos a mí me así me lo parece.
Además Kiva te permite regalar una tarjeta con la cantidad de dinero que quieras para que quien reciba el regalo pueda prestarlo a quien mejor le parezca, luego lo recupera y se lo gasta en su regalo. Pero en el camino alguien ha podido salir adelante
 ¿Por qué no te planteas un regalo diferente este año y ayudas a alguien que lo merece y se esfuerza por crear una vida mejor para él y los suyos?

Y... ¿que intereses obtengo?. Pues 0%. No se trata de una inversión de todo capital que dispongas.... ¿Pero una pequeña parte? ¿Porque no una pequeña parte?.

Recuerda,  no siempre preguntes:  ¿Cuanto me dan por mi dinero?, alguna vez debes preguntar: ¿Qué vais a hacer con mi dinero?.  Kiva es una de las respuestas, aunque no la única.





lunes, 3 de septiembre de 2012

Introducción a nmap (y III)

En este artículo, último de esta serie de introducción de nmap, continuaremos analizando la información que hemos obtenido con nmap y veremos que es más importante analizar bien la información que tenemos que llenar un documento con datos y datos sin sacar ninguna conclusión.

Vuelvo a ejecutar el comando nmap para hacer ping a toda la red:

##nmap -sP 192.168.1.0/24

Starting Nmap 5.51 ( http://nmap.org ) at 2012-09-03 18:15 ope
Nmap scan report for 192.168.1.1
Host is up (0.015s latency).
MAC Address: 50:67:F0:7F:8F:8D (Unknown)
Nmap scan report for 192.168.1.10
Host is up (0.016s latency).
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)
Nmap scan report for 192.168.1.34
Host is up.
MAC Address: 00:30:1B:B0:22:0F (Shuttle)
Nmap scan report for 192.168.1.35 Host is up (0.016s latency).
Nmap scan report for 192.168.1.36
Host is up (0.031s latency).
MAC Address: 30:17:C8:3F:9B:92 (Unknown)
Nmap done: 256 IP addresses (5 hosts up) scanned in 9.08 seconds
##

La salida es aparentemente igual a la de los post anteriores. En esta ocasión vamos  a analizar las MAC Address.

192.168.1.1  -----  50:67:F0:7F:8F:8D (Unknown)
192.168.1.10 ----- 00:30:1B:B0:22:0F (Shuttle)
192.168.1.34 ----- Equipo desde donde ejecutamos el comando nmap
192.168.1.35 ----- 00:0C:6E:D5:39:B7 (Asustek Computer)
192.168.1.36 ----- 30:17:C8:3F:9B:92 (Unknown)

 Y este es el resumen del post anterior

192.168.1.1  -----  50:67:F0:7F:8F:8D (Unknown)
192.168.1.10 ----- 00:30:1B:B0:22:0F (Shuttle)
192.168.1.33 ----- Equipo desde donde ejecutamos el comando nmap
192.168.1.34 ----- 00:0C:6E:D5:39:B7 (Asustek Computer)
192.168.1.36 ----- A4:5C:27:EE:49:6E (Nintendo Co.)




Las dos primeras direcciones coinciden pero a partir de la tercera la cosa cambia, ha desaparecido la dirección 33 (en su lugar aparece la dirección 35) y las MAC de las direcciones 34 y 36 no coinciden.

Un mínimo conocimiento de redes nos dice que lo más estable es la MAC y la dirección IP es menos estable. Lo mejor es que  identificaremos cada puesto por su MAC.

Los valores de la dirección 192.168.1.1 permanecen sin variación lo que es de esperar pues se trata del router.
Igual pasa con el equipo 192.168.1.10 (el equipo que hemos identificado previamente como Linux).

A partir de la dirección 33 vemos que los valores cambian. ¿Que podemos deducir de la siguiente informacion?. Claramente que esos equipos tienen direcciones IP dinámicas.

Recopilemos ahora la información obtenida en estos tres post.

  • Hemos identificado el router.
  • Hemos identificado dos equipos que siempre están encendidos. (Pueden ser servidores)
  • Hemos identificado otros dos equipos que a veces están encendidos  (Pueden ser portátiles u otros dispositivos y posiblemente conectados por wifi).
  • Hemos visto que el equipo Linux (Shutlle) siempre tiene la misma dirección IP (Esto nos confirmaría que se trata de un servidor).
  • Hemos visto que el equipo Windows (Asustek) tiene dirección IP dinámica. (Podríamos descartar que sea un servidor y pensar que se trata de un puesto de sobremesa).
  • La red en la que estamos tiene tanto direcciones estáticas como dinámicas. Siendo las estáticas el rango bajo de las mismas (posiblemente hasta el 32) y las altas dinámicas.
Esta información junto con la obtenida anteriormente nos saca un inventario bastante ajustado de lo que podemos encontrar en una instalación.

Para estos post hemos usado una red muy simple (un router y terminales), si la red hubiera tenido más elementos la cosa no habría sido tan sencilla incluso puede  llegar a ser tarea imposible en redes más complejas y con sistemas de protección.

Espero que para los menos familiarizados con nmap o aquellos que quieran empezar a usarlo les sirva como guía de introducción a esta potente herramienta.