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)
| | | | |-+  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 9,545 veces)
nØFi#
Overclock3r
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.338


\x2E


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

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 pm »

Puedes poner el código?
En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


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

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


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

htmlentities ?
En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


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

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

Mensajes: 6.589


Sin conocimiento no hay espíritu


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

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

Mensajes: 7.029


No estoy loco, soy mentalmente divergente


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

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 pm »

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 pm por nØFi# » En línea

#
sirdarckcat
Aspirante a supervillano
Moderador
***
Desconectado Desconectado

Mensajes: 7.029


No estoy loco, soy mentalmente divergente


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

 
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 pm »

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 3,371 Último mensaje 26 Agosto 2011, 16:00 pm
por Randomize
Unicode, eval, php hack tool, sql injection?
Hacking
Bud4 0 2,906 Último mensaje 23 Febrero 2012, 20:14 pm
por Bud4
Enlazando propiedades con Eval en vez de Bind
.NET (C#, VB.NET, ASP)
DanteInfernum 0 1,491 Último mensaje 27 Febrero 2014, 18:26 pm
por DanteInfernum
javascript seguridad eval
Desarrollo Web
matake 3 2,702 Último mensaje 25 Julio 2016, 03:07 am
por engel lex
equivalente a eval()? | javascript
Desarrollo Web
Drakaris 3 2,370 Último mensaje 25 Enero 2021, 00:17 am
por Drakaris
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines