XSS - Que es y Ejemplos de ataque -

 

 En esta ocasión les hablare de una de las vulnerabilidades mas conocidas en las paginas web. Quizás muchos de nosotros hemos escuchado hablar de  esta vulnerabilidad pero nunca nos muestran el por qué y dónde ocurre esta falla, es por eso que mostrare un ejemplo básico para comprender cómo funciona.

Que es XSS ( Cross-Site-Scripting )?

    El xss ocurre cuando un atacante es capas de inyectar código del lado cliente en un website, mayor mente código javascript para hacer un sin fin de cosas maliciosas. Esto suele pasar cuando no se valida de forma correcta el input del usuario, este tipo de falla suele ocurrir en los input-box de una web, como por ejemplo un formulario, barra de búsqueda o enlaces alternos.

Te preguntaras que podría hacer un atacante si lograse encontrar una falla xss en nuestra web. Bueno con esto un atacante podría modificar el sitio web, robar coockies, robar la sección de un usurario, realizar peticiones con la sección de cualquier usuario, instalar malware, o peor aun redireccionar un usuario a una web maliciosa.

Existen 2 tipos de ataques xss los cuales son persistent-xss y reflected-xss

Persistent: Cuando el atacante inyecta código malicioso en el servidor y este se queda guardado, por ejemplo, este código formaria parte del sitio web, en este caso el código estará presente ante cualquier cliente que acceda a la página web. Estas acciones pueden ser variadas, y dependerá del tipo de navegador, de sus vulnerabilidades, así como también de las de otros programas que tenga instalados, el Adobe Flash Player por ejemplo, que se ejecuten como el atacante tiene previsto. Para él es por tanto una ruleta de la suerte. No puede predecir el usuario que va a caer en la trampa.

ejemplo:

Reflected: En este caso seria lo contrario de persistent ya que el código no se queda guardado en el servidor, sino que va escondido dentro de un enlace que se hace llegar de algún modo a la víctima para que de click en él. Se llama así porque, si finalmente la víctima da click en el enlace, el navegador le llevará a la página en cuestión, que normalmente es un sitio legal donde el usuario tiene cuenta abierta, y a continuación ejecutará el código escondido, el cual intentará robarle la “cookie” de la sesión, o los datos que introduzca en el formulario como pudiera ser su nombre, tell, tarjetas de crédito, etc. O incluso podrá desencadenar acciones más sofisticadas en su PC como las que mencionamos anterior mente.

ejemplo:

Ejemplo de una falla XSS

    Prepare un pequeño ejemplo en php para que pudiéramos ver esta falla en acción. Primero nos dirigimos a el siguiente enlace aqui donde tendremos un input-box y un botón de submit con la acción de post.php. Básicamente  pasaremos los argumentos a el archivo post.php para que este valide esa entrada y la guarde en una base de datos (como por ejemplo pudiera ser nombre, apellido, cell,etc de un usuario). En este caso no la guardo en ninguna base de datos es solo de modo ejemplo.

El problema aquí es que no hay ninguna condición que valide la data que entramos y es aquí cuando un atacante puede entrar código js que podría ser interpretado y presentado del lado del cliente. Esto lo podemos ver en la imagen de abajo.

1. <script>alert("hello hackingpills";</script>
2. submit


Cómo podemos ver este interpretó nuestro input como código js y nos ejecuta la alerta. En este caso seria un ataque de Reflected-XSS el cual sigue siendo peligroso para un usuario que caiga en la trampa.

Código HTML 

Código PHP





Cómo vemos el código de ejemplo es muy fácil de entender ya que solo le estamos pasando el valor del input comment al post mediante el form action. Cabe decir que no siempre será así que ocurra esta falla, este código es de modo ejemplo. De esta manera ya podríamos saber qué el website es vulnerable a xss.


Como prevenir este tipo de vulnerabilidad?

Existen varias formas de protegernos de este tipo de fallas, y es que como programadores siempre debemos filtrar los inputs de un usuario para evitar que un atacante escriba secuencias de caracteres escritas en HTML o JS. Para esto existen varias funciones con las cuales podemos filtrar o validar los inputs, por ejemplo algunas de ellas son htmlspecialchars (), htmlentities () y strip_tags ().


Esta aquí llega esta sección de xss, si desean una segunda parte en la cual explicare cómo hacer bypass de estos filtros házmelo saber en los comentarios o en mi Twitter y no olviden compartir el post, gracias.



5 comentarios:

  1. Although the cause of death was reported as pneumonia, Roger, a 40-year-old extra, is convinced that his friend, Neve Garcia, was murdered.

    He is American who defines himself as straight. He finished school and then left academia.

    Physically, Roger is not in great shape. He needs to lose quite a lot of weight. He is average-height with light skin, brown hair and blue eyes. He has a mole on his left cheek.

    He grew up in an upper class neighbourhood. Having never really known his parents, he was raised in a series of foster homes.

    He is currently single. His most recent romance was with a lab assistant called Saskia Kyla Martinez, who was the same age as him. They broke up because Saskia couldn't deal with Roger's obsession with Neve's death.

    My Favourite website is : https://cheatsbridge.com/

    ResponderBorrar
  2. Allen, 30-year-old management consultant. He is British who loves video games Hungry Shark Cheats. He has a degree in business studies.

    His website is : hungry shark world hack tool

    ResponderBorrar
  3. The more bad information you get social media service, the more time and effort you have to correct the problem.

    ResponderBorrar
  4. The more bad information you get social media service, the more time and effort you have to correct the problem.

    ResponderBorrar
  5. The truth is that this process is much more difficult than it looks. Read more about my website: dark web links

    ResponderBorrar