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


 


Tema destacado: Vuelve Concurso Programación Abril Negro 2020


+  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] 2 Ir Abajo Respuesta Imprimir
Autor Tema: evitar XSS en eval()  (Leído 7,681 veces)
nØFi#
Overclock3r
Ex-Staff
*
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: 896


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
Colaborador
***
Desconectado Desconectado

Mensajes: 9.185


>.<


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.292


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

htmlentities ?
En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.185


>.<


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: 6.264


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

sirdarckcat
Aspirante a supervillano
Moderador Global
***
Desconectado Desconectado

Mensajes: 7.019


No estoy loco, soy mentalmente divergente


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
Ex-Staff
*
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
  1. <script>
  2.  
  3. var var2 = "'};alert('XSS');//";
  4.  
  5. var json = "variables = {'var1':'aaaa','var2':'"+var2+"'}";
  6.  
  7. eval(json);
  8.  
  9. </script>
  10.  

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
  1. <script>
  2.  
  3. var var2 = "'}alert('XSS')//";
  4.  
  5. var json = "variables = {'var1':'aaaa','var2':'"+var2+"'}";
  6.  
  7. if(var2.match(/^[a-zA-Z0-9]*$/)) eval(json);
  8. else console.log('eivaa');
  9.  
  10. </script>
  11.  

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

#
sirdarckcat
Aspirante a supervillano
Moderador Global
***
Desconectado Desconectado

Mensajes: 7.019


No estoy loco, soy mentalmente divergente


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
Ex-Staff
*
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

#
Páginas: [1] 2 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 2,332 Último mensaje 26 Agosto 2011, 16:00
por Randomize
Unicode, eval, php hack tool, sql injection?
Hacking Ético
Bud4 0 2,014 Último mensaje 23 Febrero 2012, 20:14
por Bud4
Enlazando propiedades con Eval en vez de Bind
.NET (C#, VB.NET, ASP)
DanteInfernum 0 751 Último mensaje 27 Febrero 2014, 18:26
por DanteInfernum
javascript seguridad eval
Desarrollo Web
matake 3 1,442 Último mensaje 25 Julio 2016, 03:07
por engel lex
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines