Introduccion al XSS by Linkgl
Publicado: 15 Mar 2010, 17:58
Bueno pues explicaré lo poco que sé sobre este tema de las inyecciones de codigo por XSS con palabras sencillas, primero que nada el significado de las siglas es Cross Site Scripting, no se escribe CSS porque normalmente llegaba a confundirse con "Cascade Style Sheet", que es el lenguaje con el que se le da estilo a una página web...
Una inyeccion XSS puede ser inyectada de distintas maneras, la mas común aunque ya obsoleta es inyectarla mediante formularios en sistemas como los famosos libros de visita, donde cualquiera puede llegar a dejar un comentario, ahora, veamos el ejemplo de un input de texto, el input se compone asi
<input type="text" />
Ahora imaginemos que suedería si rompemos el flujo del script original, cerrando la etiqueta antes para poder defacear la página, bastaría con cerrar la etiqueta del input e inyectar el código haciendo algo similar a esto:
<input type="text""><a href="#">Esto es un codigo inyectado</a>">
De igual manera con un textarea seria cortar el flujo del script
<textarea></textarea><h1>hola</h1></textarea>
De esta manera logramos inyectar cualquier tipo de código a la página...
Ahora, si se nos impide romper el flujo, otra vulnerabilidad que muchas webs cometen es no filtrar los caracteres especiales como son "<" y ">", comillas dobles y comillas simples, entonces si en un libro de visitas se postea el texto plano sin filtrarlo sería muy facil defacear simplemente inyectando el codigo directamente en el textarea o en el input haciendo algo similar a esto:
<textarea><h1>Es vulnerable</h1></textarea>
al momento de procesarlo con php o asp sin ser filtrado, el codigo se interpretara como HTML y no como texto, defaceando asi el flujo normal de la página web...
Ahora esto es muy básico, fue una pequeña introducción para la gente que no sabe nada sobre deface, con esto pueden entender almenos un poco de cómo se pueden romper flujos mas complicados como lo son para las inyecciones SQL, ahora para protegerse de estos ataques es muy fácil... Solamente hay que filtrar los caracteres especiales, por ejemplo al procesar los datos en PHP sería algo similar a esto:
Espero les sirva un poco esta pequeña introducción, un saludo!
Una inyeccion XSS puede ser inyectada de distintas maneras, la mas común aunque ya obsoleta es inyectarla mediante formularios en sistemas como los famosos libros de visita, donde cualquiera puede llegar a dejar un comentario, ahora, veamos el ejemplo de un input de texto, el input se compone asi
<input type="text" />
Ahora imaginemos que suedería si rompemos el flujo del script original, cerrando la etiqueta antes para poder defacear la página, bastaría con cerrar la etiqueta del input e inyectar el código haciendo algo similar a esto:
<input type="text""><a href="#">Esto es un codigo inyectado</a>">
De igual manera con un textarea seria cortar el flujo del script
<textarea></textarea><h1>hola</h1></textarea>
De esta manera logramos inyectar cualquier tipo de código a la página...
Ahora, si se nos impide romper el flujo, otra vulnerabilidad que muchas webs cometen es no filtrar los caracteres especiales como son "<" y ">", comillas dobles y comillas simples, entonces si en un libro de visitas se postea el texto plano sin filtrarlo sería muy facil defacear simplemente inyectando el codigo directamente en el textarea o en el input haciendo algo similar a esto:
<textarea><h1>Es vulnerable</h1></textarea>
al momento de procesarlo con php o asp sin ser filtrado, el codigo se interpretara como HTML y no como texto, defaceando asi el flujo normal de la página web...
Ahora esto es muy básico, fue una pequeña introducción para la gente que no sabe nada sobre deface, con esto pueden entender almenos un poco de cómo se pueden romper flujos mas complicados como lo son para las inyecciones SQL, ahora para protegerse de estos ataques es muy fácil... Solamente hay que filtrar los caracteres especiales, por ejemplo al procesar los datos en PHP sería algo similar a esto:
Código: Seleccionar todo
$texto=$_POST['texto'];//texto plano
$texto=htmlentities($texto);//funcion que filtra los caracteres
//proceso del programa