Bug en SMF 1.1.8 y 1.1.9 by OzdoX

Bug en SMF 1.1.8 y 1.1.9 by OzdoX


Estaba observando que SMF ya se actualizó a la versión 1.1.9 y me dió la curiosidad de buscar mas información del porqué lo hizo.

Buscando y buscando en simplemachines me di cuenta que esta actualización era por asuntos de seguridad asi que me puse a googlear y encontré esto -->
http://www.simplemachines.org/commun...topic=309741.0
"Hacked: 1.1.8 attachments / avatars still has a vulnerability"

Lo que entendí hasta la primera página era que un atacante había subido un avatar con contenido php .. no se pero ultimamente las explotaciones de bugs en SMF se explotan con un archivo adjunto a un tema o subiendo un avatar ya que su contenido no se filtra.

También pude leer el post donde se explica un poco mejor lo de la actualización y se recomienda oficialmente deshabilitar tremporalmente la subida de archivos al servidor -->
http://www.simplemachines.org/commun...topic=309717.0



Cita:
Following these simple instructions will make your forum invulnerable to the recent attack by uploadable avatar.


Se explota de la siguiente manera:
Se sube un avatar con comandos arbitrarios que puede ser una c99
Se ve la dirección index.php?action=theme;sa=pick;u=[id de tu perfil];sesc=[tu hash sesc]
y smf hará una inclusión hacia tu avatar creyendo que es un theme modificas tu theme y le das la ruta del avatar terminado en o \0 que es un null byte.
http://www.simplemachines.org/commun...804#msg2056804

Descarga la versión 1.1.9 que tiene parchado el problema -->
http://download.simplemachines.org/


Aprovechando este post quiero exponer un par de bugs para smf 1.1.9:

1. Bug en el módulo de encuestas.
Si te fijas en el código fuente Sources/Pool.php Linea 164 a 166 podrás ver

Código:
foreach ($_REQUEST['options'] as $id)   {      $id = (int) $id;
A veces no puedes votar tranquilo porque te deniegan la visualización de los resultados si no votas primero asi que hacemos un bypass sabiendo que la variable es numérica pero en ningún lado especifica que no podamos ingresar valores negativos, le insertamos el valor "-1" y cuando le damos en votar nos aparecerán los resultados sin que nuestro voto afecte la encuesta.
Esto no es una vulnerabilidad grave, solo es un bug ya que no debería funcionar de esa forma.

2. El segundo bug está en el componente Sources/Sub-Auth.php linea 459 donde la query hacia la base de datos para ir buscando miembros puede ser de valores extremos haciendo que la memoria colapse o se detenga cuando llegue al limite estipulado en la configuración del php.ini.

Por ejemplo vamos a el perfil -> configuración de mensajes privados y le haces click donde dice buscar usuarios (esta opción está en varias secciones del perfil), se abrirá una pequeña ventana hacia:
http://foro.sitio/index.php?action=findmember;sesc=[hash]
donde dice buscar usuarios fijate que nos da un comodín asterisco asi que vamos a lo mas lógico con una mentalidad psicópata y le ponemos asterisco.. al darle buscar simplemente colapsará, nos dará error de php o reaccionará dependiendo de la forma de mostrar errores que esté configurado en el script o php.ini.



Cita:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 86 bytes) in /home/vart001/public_html/foro/Sources/Subs-Auth.php on line 468

Haciendo unas pocas peticiones GET seguidas podrías hacer colapsar al servidor completo dejandolo sin recursos de memoria.

3. SMF no tiene control sobre la cantidad de noticias RSS desplegados en pantalla asi que puedes solicitar con toda confianza unos 999 post y te los comenzará a dar. Al igual que en el caso anterior solo basta hacer unas pocas peticiones seguidas de esta forma para que el servidor MySQL le deniegue el acceso a php debido a que sobrepasa el limite de memoria utilizado quedando el foro off.

Prueba:
http://foro.web/index.php?action=.xm...t=999;type=rss


Cita:
Fatal error: Maximum execution time of 30 seconds exceeded in /home/vart001/public_html/foro/Sources/Load.php(195) : runtime-created function on line 3
4. Información disclosure:
No sirve el estado oculto de un perfil (opción de no mostrar si estás conectado) ya que si miras el perfil de una persona que no está conectada puedes ver que dice


Cita:
Última vez activo: Hoy a las 07:18
y arriba en el foro dice:

Cita:
22 Mayo 2009, 07:18
asi que obiamente está conectado y podemos reclamarle el dinero que nos debe ese contacto , lo normal que debería hacer smf es no mostrar ese dato si se ha activado la casilla de estar invisible.

5. Información disclosure:
Hay una opción que dice no mostrar los post si el visitante no está registrado.. mm... fácil, le ponemos al final action=.xml y verás el foro en formato xml con temas y todo xD por ahi sdc había encontrado una forma de ver el perfil en formato xml asi que talves puedas enviar esa acción sin utilizar la variable action y ver otras secciones de la misma forma.

6. El csrf que publiqué hace bastante todabía sigue en pié, donde el usuario puede poner en su firma una imagen con el enlace hacia el colapso de todos los foros y cuando veas un post de ese atacante despues verás todos los foros colapsados.


Saludos,
xassiz

0 comentarios:

Publicar un comentario