This site uses cookies own and third. If you continue to browse consider to accept the use of cookies. OK More Info.

HTML Injection (post para novatos)

  • 2 Replies
  • 5854 Views

0 Members and 2 Guests are viewing this topic.

Offline Olger346

  • *
  • Underc0der
  • Posts: 38
  • Actividad:
    0%
  • Reputación 1
  • Twitter: @Olger346
    • View Profile

HTML Injection (post para novatos)

  • on: December 25, 2017, 10:05:50 am
Felíz Navidad a todos...

Hoy vengo a postear sobre lo que dice el título. Bien tal vez será que no lo veamos mucho en las webs de internet. Pero sigue siendo una de las vulnerabilidades que lleva mucho años en el top 10 de OWASP, y se da en parte porque obviamos algunas cosas o porque pensamos que nadie vendrá a atacarnos porque no tenemos nada importante. Sin embargo, no está dentro de las mejores prácticas en la gobernanza de activos de TI.

Qué es html injection (OWASP)
Quote
HTML injection is a type of injection issue that occurs when a user is able to control an input point and is able to inject arbitrary HTML code into a vulnerable web page. This vulnerability can have many consequences, like disclosure of a user's session cookies that could be used to impersonate the victim, or, more generally, it can allow the attacker to modify the page content seen by the victims.

Bien según owasp tenemos multiples variantes a insertar en una web vulnerable. Para efecto de prueba y ética usare bWAPP.
Ejemplo 1: Nivel bajo (validación de entrada de datos nula)


En este caso la validación de la entrada de los caracteres es nula y por ello se ve reflejada en la salida del navegador y por ello, los caracteres "<" ">" son tratados como una cosa normal ante el sitio y el navegador.


Hemos intentado insertando un script para mandar una alerta al usuario (esto sólo pasa si enviamos la url maliciosa a un usuario específico).

Ejemplo 2: Nivel medio (aquí es donde viene lo bueno del asunto). Cuando el programador cree que es más listo que el atacante.

Para explicar exactamente qué es lo que sucede, es que el programador ha decidido anular los caracteres "<" ">" que son indispensables para la inyección de código de html y javascript. Sin embargo sabemos que nuestra aplicación utiliza PHP como su lenguaje de backend y esta siendo procesado por el servidor. Si nos fijamos en la URL del navegador tenemos múltiples caracteres que aparecen dentro de ellos "%" y otros caracteres que son interpretados por PHP y que darán respuesta al navegador. Muy característicos de CMS como Joomla y Drupal que funcional bajo php

¿Entonces qué podemos hacer? Utilizaremos esta información que nos brinda la URL, bajo You are not allowed to view links. Register or Login esta tabla podemos convertir cualquier caracter normal a uno que interprete el servidor.

Code: You are not allowed to view links. Register or Login
%3Cinput type="text" name="usuario"%3E
%3Cinput type="password" name="passwd"
Con esto bypaseamos las buenas intenciones del programador.

Bien, esta entrada de datos la podemos enviar a otro servidor y recojerlas y habremos obtenido un usuario y password que seguramente algún flojo no cambió en sus redes sociales. Claro que debe ser un poquito más de codificación en HTML

Ejemplo 3: Nivel Difícil
En este nivel vemos la mejor manera de evitar que un atacante intente insertar código en nuestra web.

Esta vez vemos que no podemos usar ninguna de las formas que intentamos anteriormente. Esto se debe a que el programador utilizó una función de PHP que nos ha mandado a "tomar por saco".

Sin embargo aquí no se queda todo, la función utilizada por el programador fue htmlentities(). Por sí sola esta función no para que los atacantes inserten código en el navegador.
Code: You are not allowed to view links. Register or Login
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">Acompañada de la codificación que acepte el navegador esta función puede o no ser útil. En este caso el programador decidió que UTF-8 sería la entrada aceptada, de manera que no podemos bypasear la función utilizando UTF-7 u otro.

Si el programador hubiese puesto un documento normal de HTML probablemente seguiría siendo vulnerable el sitio.
por ejemplo:
Code: You are not allowed to view links. Register or Login
<html> 
<body>
<input type="text" name="username" action="">
<input type="password" name="passwd">
<button type="submit" name="boton" value="Log in">
</body></html>
El código sería vulnerable porque no se ha especificado el valor de la codificación en el tag <meta> en la página.

Referencias
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Espero que les haya servido. :)

"Cuando se nace pobre, estudiar es el mayor acto de rebeldía contra el sistema. El saber rompe las cadenas de la esclavitud" -Tomas Bulat.

Offline DLV

  • *
  • Underc0der
  • Posts: 111
  • Actividad:
    0%
  • Reputación 0
    • View Profile

Re:HTML Injection (post para novatos)

  • on: December 26, 2017, 11:37:27 am
:)
« Last Edit: April 22, 2019, 03:09:06 pm by PlhaOGEOYceXkhd9rlYxJGzedkbolnxpnReqRiTk47d6JgDTRu »

Offline Terotele

  • *
  • Underc0der
  • Posts: 7
  • Actividad:
    0%
  • Reputación 0
    • View Profile

Re: HTML Injection (post para novatos)

  • on: May 12, 2022, 10:46:55 pm
Muy interesante post!! 8)