[Tutorial] Hacer/Evitar HTML Injection

Iniciado por Xt3mP, Agosto 23, 2010, 10:30:44 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Este tutorial es viejo, creí que ya lo había posteado:
Antes de seguir quiero mencionar que esta vulnerabilidad casi ya no es encontrada en la web, pero nada es imposible, si no quieren leer pueden ver el video dando No tienes permitido ver los links. Registrarse o Entrar a mi cuenta aquí.
###########################################################################0x01
0x01 ~ Indice
0x02 ~ Autor
0x03 ~ Términos
0x04 ~ Dorks
0x04x01 ~ Como saber si es vulnerable
0x04x02 ~ Como comenzar a atacar
0x05 ~ Sugerencias
0x06 ~ Evitar HTMLi
0x07 ~ Despedida
############################################################################0x02

Autor:

El creador de este paper se hace nombrar Xt3mP el cuál lo hace con el fin de to-
car más este tema, para aclarar dudas y/o adentrarlos al área del HTML Injection,
más sin embargo, no se hace responsable por los actos y/ó consecuencias que pueda
ocasionar abrirlos en este ámbito.

############################################################################0x03

Términos:

HTML = HyperText Markup Language (Lenguaje de Marcas de Hipertexto)

Filtrar = En este ámbito nos referirémos a filtrar al quitar código que pudiese ser malicioso, en los
campos ó casillas de texto para evitar posibles vulnerabilidades en nuestro sitio web.

Dork: En este ámbito nos referirémos a "dorks" a "frases ó palabras" que nos facilitarán las páginas
vulnerables.

¿Por qué es posible? Por la mal estructuración del código que no filtra el texto introducido, por lo tanto al implementar etiquetas de HTML en el campo y guardarlas en el archivo PHP las leerá como HTML y hará lo que le indiquémos en el campo.

Ejemplo : < b >Hola< /b > = Hola

############################################################################0x04

Dorks:

La mayoría de los DORKS actuales ya no son efectivos ya que la mayoría ya los malexploto lo que ocasionó
que nuestro buscador nos tiré páginas que ya fueron hackeadas ó que ya está reparado el bug, pero a
continuación les dejaré unos:

Código: html

allinurl:visitas.php
allinurl:librovisitas.php
allinurl:bookmark.php


Ustedes pueden ir variando el nombre del archivo PHP por alguno relacionado con algún libro de visitas.

############################################################################0x04x01

Como saber si es vulnerable

Para ver si dicha página es vulnerable necesitarémos introducir/comentar en el libro de visitas (en este caso) algúna etiqueta HTML común como <h1> seguido de un texto y si nuestra respuesta lleva acabo el código HTML introducido es muy probable que podámos aprovechar la mal estructuración y/ó filtración del código.

Ejemplo:

Nombre: Xt3mP
Mail: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Comentario: <h1> Test


Y el resultado sería:

Nombre: Xt3mP
Mail: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Comentario: Test



############################################################################0x04x02

Comenzar a atacar

Ya que tengamos nuestra página vulnerable, rellenarémos los datos con valores falsos pero en la casilla de comentario utilizarémos código HTML (<H1>) para forzar a la mala estructuració a que lo haga a la piel de la letra:

Comentario: <h1> Test

Si sale todo como debería de salir (Tamaño grande), harémos llamado a ún Script que mostrará una alerta de bienvenida (por así llamarlo) con el siguiente comando:

Comentario: <script>alert('I_am_Xt3mP')</script>

Con eso te deberá mostrar una alerta al entrar a la página PHP mostrando el texto que indicamos entre ' y '.

Con esto prácticamente hemos acabado pero para un toque final, agregarémos una redirección hacia "otra página" para mostrar algún mensaje personal ó que nos caracteríze con el siguiente comando:

Comentario: <META HTTP-EQUIV="refresh" CONTENT="segundos;url=URL DE LA PAGINA">

En donde CONTENT=" Deberá ir los segundos que tardará en redireccionar y en url la url de nuestra página, ejemplo;

Comentario: <META HTTP-EQUIV="refresh" CONTENT="3;url=No tienes permitido ver los links. Registrarse o Entrar a mi cuenta">

Con esto hemos terminado la explotación de esta vulnerabilidad denominada HTML Injection.


############################################################################0x05

Sugerencias

La primer sugerencia que les haré concorde a esto es que evitense la pena (literalmente) de cometer una infracción con la página web que expuse como ejemplo, ya que fue elejida al azar y no tiene ningún antecedente delictivo por el cuál merezca ser hackeada.

Sobre la HTMLi (HTML Injection), no siempre al aceptar la alerta te acepta la redirección, así que cuidado con eso.

############################################################################0x06

Evitar HTMLi

La HTMLi es positiva por que al guardar (usarémos en este caso archivos .txt) lo guardan directamente como se indica en la casilla de texto en vez de filtrarla, un ejemplo común es este:

Código: php

<?php
$archivo = "file.txt";
$manejador = fopen($archivo,"w") or die("Imposible abrir el archivo\n");
$todo = $_POST['name'].$_POST['mail'].$_POST['comment'];
fwrite($manejador,$todo);
fclose($manejador);
?>


Entonces si ponemos etiquetas HTML ó parecidas las guardaría exactamente y al momento de leerlas la tomaría como si el servidor lo tuviera pre-escrito y las ejecutaría vulnerabilizando el sistema.

Para filtrar las variables existen dos comandos claves en PHP, los cuales son stripslashes y strip_tags que nos filtrarán todas las etiquetas y caractéres raros que pudiera vulnerabilizarnos, un ejemplo común es este:

Código: php

<?php
$archivo = "file.txt";
$manejador = fopen($archivo,"w") or die("Imposible abrir el archivo\n");
$name = strip_tags($_POST['name']);
$name = stripslashes($name);
$mail = strip_tags($_POST['mail'];
$mail = stripslashes($mail);
$comment = strip_tags($_POST['comment'];
$comment = stripslashes($comment);
$todo = $name.$mail.$comment;
fwrite($manejador,$todo);
fclose($manejador);
?>


En donde si escribimos <h1>Test solo mostraría "Test" ya que filtramos las variables.

############################################################################0x07

Despedida

Por pasos sería:

1- Encontrar archivo que lea las etiquetas HTML directamente.
2- Explotar la vulnerabilidad con los comandos arriba dados.

Espero que hayan comprendido bien el uso de esta técnica, cualquier duda o comentario haganla saber.

Xt3mP

###########################################################################
Cada vez que me das Karma me motivas