Bueno ya encontré otra falla 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.
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.
« Última modificación: 15 Febrero 2009, 05:42 am por WHK »
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 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ó.
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:
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.
« Última modificación: 15 Febrero 2009, 07:26 am por WHK »
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 me avisan XD
« Última modificación: 16 Febrero 2009, 00:23 am por WHK »
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.
Tu tienes suerte 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.
Tu tienes suerte 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.
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".
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.
fwrite($archivo_handle,'La shell ha sido obtenida exitosamente!. URL: '.$EXPL['SITIO_VULNERABLE'].'/modules/mod_artimesk/mod_artimesk.php'."\x0D\x0A");
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");
Interesante , he visto el video y solo puedo decir una cosa, tu si sabes elegir la música de fondo
Saludos
En línea
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD"Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro."
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
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