elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 05:42  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits
| | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | |-+  evitar XSS en eval()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: evitar XSS en eval()  (Leído 4,051 veces)
nØFi#
Overclock3r
Colaborador
***
Desconectado Desconectado

Mensajes: 1.338


\x2E


Ver Perfil
evitar XSS en eval()
« en: 12 Noviembre 2009, 10:00 »

Buenas!

Estoy haciendo un script con un eval que ejecuta una serie de cosas que se le pasan por variable. Me he puesto a trastear un poco y evidentemente sin filtros ni nada es vulnerable a XSS. Estoy pensando una forma buena para evitar cualquier XSS pero no termino de encontrar algo optimo. En php era facil, usaba un htmlentities y ya me codificaba todos los caracteres a html, pero en javascript nose como puedo hacer el filtro.

Alguna idea de como filtrar?
En línea

#
braulio--
Wiki

Desconectado Desconectado

Mensajes: 889


Imagen recursiva


Ver Perfil WWW
Re: evitar XSS en eval()
« Respuesta #1 en: 12 Noviembre 2009, 13:56 »

Puedes poner el código?
En línea

Azielito
no es
CoAdmin
***
Desconectado Desconectado

Mensajes: 9.114


>.<


Ver Perfil WWW
Re: evitar XSS en eval()
« Respuesta #2 en: 12 Noviembre 2009, 16:26 »

No se pode con str_replace? y quitar los "<>" y demas? claro, tratando de evitar un bypass


En línea

Darioxhcx


Desconectado Desconectado

Mensajes: 2.150


Ver Perfil
Re: evitar XSS en eval()
« Respuesta #3 en: 12 Noviembre 2009, 17:14 »

htmlentities ?
En línea

Azielito
no es
CoAdmin
***
Desconectado Desconectado

Mensajes: 9.114


>.<


Ver Perfil WWW
Re: evitar XSS en eval()
« Respuesta #4 en: 12 Noviembre 2009, 17:19 »

mira esta pagina :xD

http://phpjs.org/functions/htmlentities:425

y mira el index de la pagina, esta bn bueno :D

En línea

WHK
吴阿卡
Moderador
***
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


Ver Perfil WWW
Re: evitar XSS en eval()
« Respuesta #5 en: 12 Noviembre 2009, 20:11 »

Un htmlentities no eviatrá un xss ya que puedes insertar saltos de linea o carácteres nulos. Si por ejemplo tu código está encerrado en un try{} basta con hacer un salto de linea y escribir un }catch(x){alert(document.cookie) ya que el try evitará que se termine la ejecución del script por un error de sintaxis dejando la posibilidad de ejecutar código arbitrario.

Yo te recomendaría que utilizes una función similar a lo que hace escape real string de php pero para js, le haces stripslashses, luego addslashses, eliminas \n \r \01 \00, etc y al final lo pasas por trim o utiliza expresiones regulares con match.

Ahora, si vas a pasar variables que si contienen saltos de linea puedes pasarlos a urlencode y despues lo procesas en urldecode teniendo en cuenta de que si lo vas a imprimir en la página debes tener cuidado de no imprimir todo directamente o si no también tendrás problemas de xss.
En línea

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
sirdarckcat
Troll Buena Onda y
Moderador
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: evitar XSS en eval()
« Respuesta #6 en: 16 Noviembre 2009, 09:32 »

Puedes poner el código?
sin codigo no se puede ayudar.. depende que hay dentro del eval.
En línea

nØFi#
Overclock3r
Colaborador
***
Desconectado Desconectado

Mensajes: 1.338


\x2E


Ver Perfil
Re: evitar XSS en eval()
« Respuesta #7 en: 17 Noviembre 2009, 21:14 »

El eval() lo uso para ejecutar un objeto json.. algo asi:

Código
<script>
 
var var2 = "'};alert('XSS');//";
 
var json = "variables = {'var1':'aaaa','var2':'"+var2+"'}";
 
eval(json);
 
</script>
 

En este caso, una manera de evitar el XSS seria escapar comillas.. pero con el \00 o algun otro metodo se puede bypassear?

Pensando un poco, creo que seria mejor poner una expresion regular que solo aceptase caracteres [a-zA-Z] y seria mas seguro. Como lo veis?


PD: Muy buena la pagina de phpjs :D


EDIT:

algo asi tenia pensado:
Código
<script>
 
var var2 = "'}alert('XSS')//";
 
var json = "variables = {'var1':'aaaa','var2':'"+var2+"'}";
 
if(var2.match(/^[a-zA-Z0-9]*$/)) eval(json);
else console.log('eivaa');
 
</script>
 

no creo que haya ningun bypass no?  :xD
« Última modificación: 17 Noviembre 2009, 21:34 por nØFi# » En línea

#
sirdarckcat
Troll Buena Onda y
Moderador
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: evitar XSS en eval()
« Respuesta #8 en: 18 Noviembre 2009, 03:50 »

 
Citar
if(var2.match(/^[a-zA-Z0-9]*$/)) eval(json)
si.. eso esta bien para lo que quieres hacer.

y no te recomiendo uses eval si vas a parsear JSON.. te recomendaria usar este:
http://www.json.org/json2.js

porque su sintaxis y todo se esta portando a los navegadores (firefox/internet explorer/chrome/etc..)
En línea

nØFi#
Overclock3r
Colaborador
***
Desconectado Desconectado

Mensajes: 1.338


\x2E


Ver Perfil
Re: evitar XSS en eval()
« Respuesta #9 en: 18 Noviembre 2009, 12:56 »

Perfecto :D

Lo de parsear con el objeto JSON ya lo estuve pensando, pero con navegadores 'viejos' (IE6 por ejemplo) no va a funcionar no?

Es que la gente no se actualiza,usa mucho el ie6.. incluso ie5 XDD
En línea

#
WHK
吴阿卡
Moderador
***
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


Ver Perfil WWW
Re: evitar XSS en eval()
« Respuesta #10 en: 18 Noviembre 2009, 18:32 »

Yo utilizo el serializado :P para mi es mas comodo que utilizar json.
Creas el array con el contenido y luego lo serializas y lo pasas por xmlhttp y lo desserializas y obtienes el array nuevamente.
Me gusta porque tiene soporte nativo en php y lo usas desde jquery en javascript o si no php.js pero no se, no me llama la atención el json.
En línea

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
sirdarckcat
Troll Buena Onda y
Moderador
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: evitar XSS en eval()
« Respuesta #11 en: 22 Noviembre 2009, 16:25 »

@n0fi:
este script:
http://www.json.org/json2.js

funciona en todos lados.. o al menos deberia.

@whk, nahhhhhhhhh json es la onda xD

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
donde puedo en contra el encristador eval unescape
Seguridad
manu70 1 1,129 Último mensaje 26 Agosto 2011, 16:00
por Randomize
Unicode, eval, php hack tool, sql injection?
Hacking Avanzado
Bud4 0 357 Último mensaje 23 Febrero 2012, 20:14
por Bud4
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines