Hack x Crack - Comunidad de Seguridad informática

Seguridad Informatica => Hacking => Hacking web => Mensaje iniciado por: 2Fac3R en Noviembre 21, 2011, 07:34:55 pm

Título: HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: 2Fac3R en Noviembre 21, 2011, 07:34:55 pm
Bienvenidos a este nuevo tutorial, soy 2Fac3R y en este tutorial se mostrara informacion sobre el bug HTML injection.

CONOCIMIENTOS BASICOS:

- Saber montar un servidor local de pruebas
- Conocer lo basico de HTML, PHP y MySQL


¿En que consiste el HTMLi?

El fallo consiste en la inyecciòn de codigo HTML en una web, el fallo se da cuando un webmaster pide al usuario que ingrese
algun valor, y el usuario (atacante) inyecta codigo malicioso (HTML injection) lo cual hace que ese codigo sea mostrado en
el website del webmaster.


Vamos a crear un ejemplo de codigo que se ejecuta pidiendole al usuario:

Código: PHP
  1. <html>
  2. <head>
  3. <title> HTMLi Tester By 2Fac3R </title>
  4. <body bgcolor="black" text="green" link="white">
  5. <?php
  6. //Se recibe la llamada por $_GET
  7. $inj = $_GET['inj'];
  8. //Sí la variable contiene algo, muestra el contenido
  9. if(isset($inj))
  10. {
  11. echo $inj;
  12. }else{
  13. //Sino Nos da un link que nos direcciona a donde ponemos la inyeccion (el sitio de el GET por URL)
  14. echo '<a href="http://127.0.0.1/htmli.php?inj=">Inyectar!</a>';
  15. }
  16. ?>
  17. </body>
  18. </html>
  19.  
Como vemos, si inyectamos codigo cualquiera el navegador lo ejecutara y mostrara nuestro mensaje, vamos a la pagina, en mi
caso lo hago desde localhost asi que queda asi:

http://127.0.0.1/htmli.php

Al ejecutarlo nos aparece la imagen con el link de "inyectar!" que hemos puesto en el "else".

Vamos y nos da un :

http://127.0.0.1/htmli.php?inj=


INYECTANDO CODIGO:


¿Como sabemos si la web es vulnerable?, lo que hay que hacer es probar codigo HTML para ver si se ejecuta, por lo tanto si
ponemos:

http://127.0.0.1/htmli.php?inj=<h1>2Fac3R

Nos saltaria "2Fac3R" en un encabezado (<h1>), con esto nos damos cuenta que lo que pongamos en la variable "inj" en la URL
($_GET) no lo ejecutaria el navegador...


JUGANDO CON LAS INYECCIONES:

Como sabemos, para jugar con las inyecciones y entretenernos un rato, podemos hacer uso de diferentes tipos de etiquetas
dependiendo el dominio que tengamos sobre HTML, por ejemplo:


http://127.0.0.1/htmli.php?inj=0wn3dD By 2Fac3R<p>Este es un defacement
por HTMLi

http://127.0.0.1/htmli.php?inj=0wn3dD By <h1>2Fac3R</h1>Este es un defacement
<font color="RED">por HTMLi</font>

http://127.0.0.1/htmli.php?inj=<font size ="10" color="red"><marquee>0wn3DD By 2Fac3R</marquee></font>

Y asi dependiendo de la imaginación de cada quien ;)

Pero en este caso hay algo que no nos gusta, los codigos solo los veremos nosotros en nuestro navegador, ya que no se esta
ejecutando del lado del servidor, asi que no seria muy util para hacer algo serio, a menos que usaramos ing. Social para
que alguien mas (web-admin) lo ejecute (por lo regular seria un XSS, para robar cookies) y asi hacernos de algo o
simplemente que vea nuestra hermosa inyeccion xDD.


>GUESTBOOK´S, Y APLICACIONES VULNERABLES:

En muchos sitios encontramos con los famosos "libros de visitas" el cual tiene la finalidad de que el usuario comente sobre
la web, ponga sus experiencias, criticas, opiniones, etc. Es aqui donde se utiliza mas el HTMLi, el usuario puede agregar
lo que quiera y por lo tanto ese mensaje quedara guardado en la base de datos del website para despues mostrarse, y asi es
como tendriamos oportunidad de injectar codigo y que se ejecute en el navegador de los usuarios cuando visiten esa
aplicación

Nota: No solo con libros de visitas podemos injectar codigo, sino con cualquier aplicación web que no filtre esos datos y
que los muestre despues.


En el ejemplo que hemos visto, mostramos la forma por $_GET ya que es mas comodo inyectar mediante la URL, ahora veamos un
codigo de ejemplo por POST, el cual funciona por un Formulario:

Código: PHP
  1. <html>
  2. <head>
  3. <title> HTMLi Tester ($_POST)</title>
  4. <body bgcolor="black" text="green">
  5. <?php
  6. $snd = $_POST['send'];
  7. $it = $_POST['inj'];
  8. if(isset($snd))
  9. {
  10.  //Mostramos en pantalla el contenido que viene del Formulario
  11.  echo $it;
  12. }else{
  13. echo '
  14. <form action="" method="POST">
  15. <input type="text" name="inj">
  16. <input type="submit" name="send" value="Inyectar!">
  17. </form>
  18. ';
  19. }
  20. ?>
  21. </body>
  22. </html>

Nos damos cuenta que realmente es lo mismo, solo que inyectamos el codigo mediante un formulario y por $_POST, asi que para
que sea realmente vulnerable y util, ya que este tutorial pretende ser muy practico y con muchos ejemplos, veamos un codigo
de un Guestbook codeado por mi usando HTML, PHP y MySQL, logicamente no contiene la seguridad que deberia:

guestbook.php

Código: PHP
  1. <?php
  2. $serv = "localhost";
  3. $user = "root";
  4. $pass = "root";
  5. $db = "prueba";
  6. if(isset($_POST['send']))
  7. {
  8.  $conexion=mysql_connect($serv,$user,$pass);
  9.  mysql_select_db($db,$conexion) or die ("Error en la seleccion de la bd".mysql_error());
  10.  mysql_query("INSERT INTO comentarios(Autor,Titulo,Mensaje)
  11.              VALUES ('".$_REQUEST['Autor']."','".$_REQUEST['Titulo']."','".$_REQUEST['Mensaje']."')", $conexion)
  12.                            or die ("Error en la query".mysql_error());
  13.  mysql_close($conexion);
  14.  echo "Se ha publicado correctamente";
  15.    }else{
  16.         echo '
  17. <form action="" method="POST">
  18. <b> Autor: <input type="text" name="Autor"> <br>
  19. Titulo: <input type="text" name="Titulo"> <br> <br>
  20. Mensaje: </b><br><TEXTAREA name="Mensaje" cols="100" rows="10"> </TEXTAREA> <br>
  21. <input type="submit" name="send" value="Publicar!">
  22. </form>
  23. ';
  24. }
  25.  
  26. ?>

Logicamente no se explicara el codigo (se supone que ya lo entiendes xD), veamos el codigo que ha creado el webmaster del
sitio para ver el contenido de lo que se publica, logicamente lo puede ver desde la bd pero por X razon existe el code:

Código: PHP
  1. <?php
  2. # Reemplazar por tus datos:
  3. $serv = "localhost";
  4. $user = "root";
  5. $pass = "root";
  6. $db = "prueba";
  7. #...............................
  8. $conexion=mysql_connect($serv, $user, $pass) or die("Problemas en la conexion");
  9. # Se selecciona la bd
  10. mysql_select_db($db,$conexion) or die("Problemas en la selección de la base de datos");
  11. # Se seleccionan las columnas a trabajar
  12. $comments=mysql_query("SELECT * FROM comentarios",$conexion) or die("Problemas en el select:".mysql_error());
  13. # Se mete en la variable la llamada a la sql anterior  
  14. # Se crea un bucle a trabajar en cada vuelta de datos que encuentre                                
  15. while ($dat=mysql_fetch_array($comments))
  16. {
  17.   echo "<b> Autor :</b>".$dat['Autor']."<br>";
  18.   echo "<b> Titulo : </b>".$dat['Titulo']."<br>";
  19.   echo "<b> Mensaje : </b>".$dat['Mensaje']."<br>";
  20.   echo "---------------------------------------------<br>";
  21. }
  22. # Cerramos la conexion...
  23. mysql_close($conexion);
  24. ?>
  25.  


Ahi comente el codigo (por si no se entiende del todo), con esto vemos que imprime directamente el contenido de la bd, por
lo tanto si nosotros metieramos codigo malicioso, nos lo mostraria en pantalla sin ningun filtro, con esto podriamos hacer
un HTMLi o incluso un XSS.


SECURIZANDO NUESTRO WEBSITE:

Todo esto puede ser muy lindo, el estar dandole dolores de cabeza al webmaster, pero que pasaria si nos lo hacen a nosotros
no seria muy bonito ahora. Veamos como hacer que nuestro sitio no nos hagan estas inyecciones de codigo (HTML, XSS...)

Opciones:

strip_tags() = Elimina las etiquetas
ejemplo:

<h1>0wnN3D</h1> Nos daria: 0wnN3D (simplemente)

Código: PHP
  1. <html>
  2. <head>
  3. <title> HTMLi Tester By 2Fac3R (parcheado) </title>
  4. <body bgcolor="black" text="green" link="white">
  5. <?php
  6. $inj = $_GET['inj'];
  7. if(isset($inj))
  8. {
  9. echo strip_tags($inj);
  10. }else{
  11. echo '<a href="http://127.0.0.1/htmli.php?inj=">Inyectar!</a>';
  12. }
  13. ?>
  14. </body>
  15. </html>
  16.  

htmlentities() = Obtiene las etiquetas de la inyeccion pero no las ejecuta
ejemplo:
<h1>0wnN3D</h1> Nos daria: <h1>0wnN3D</h1> (pero no ejecutaria el codigo)

Código: PHP
  1. <html>
  2. <head>
  3. <title> HTMLi Tester By 2Fac3R (parcheado) </title>
  4. <body bgcolor="black" text="green" link="white">
  5. <?php
  6. $inj = $_GET['inj'];
  7. if(isset($inj))
  8. {
  9. echo htmlentities($inj)
  10. }else{
  11. echo '<a href="http://127.0.0.1/htmli.php?inj=">Inyectar!</a>';
  12. }
  13. ?>
  14. </body>
  15. </html>
  16.  
La opcion que ustedes eligan pues ya depende del caso.
Creo que el contenido del manual se ha explicado correctamente, por lo tanto creo que aqui termina.
Recuerda que esto es para practicar en casa y APRENDER, no para dañar a cada website que te encuentres vulnerable.

COPYRIGHT:

It has Written By 2Fac3R FOR http://www.breaksecurity.blogspot.com

#####################################
##                                                                          ##
# Destribución libre, respetando el autor y dedicatoria.  #
##                                                                           ##
######################################
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: deivid en Noviembre 22, 2011, 07:53:07 pm
Muy bueno el aporte, es bueno estar informado :D.
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: overload en Noviembre 22, 2011, 08:08:05 pm
Que bueno 2FaC!
Te lo fijo!

Un saludo!
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: westernson en Noviembre 22, 2011, 10:37:38 pm
Buen tuto  ;)
Bytess
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: 2Fac3R en Noviembre 22, 2011, 11:51:09 pm
Gracias amigos, si hay dudas aca andamos ;)
Zalu2
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: 0xP01S0N en Noviembre 22, 2011, 11:58:12 pm
¡Buen manual!
¡Un saludo, 2Fac!!
3hy!
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Infectedbug en Noviembre 23, 2011, 12:59:11 am
Muy bueno 2Fac3r :D
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: 3V1L en Enero 27, 2012, 02:39:50 pm
2Fac3R Great! bro! thanks!
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: RETRY en Febrero 05, 2012, 12:44:58 am
Gracias :D voy a ponerlo en practica
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: <[Zoro]248> en Febrero 05, 2012, 03:02:22 am
Gracias por el aporte
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Hades en Abril 04, 2012, 03:25:25 am
Excelente info gracias amigo
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: c4nzt00 en Abril 19, 2012, 12:37:11 am
kiero aprender esto pero nunka entiendo :/
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Intruder-T23 en Abril 21, 2012, 02:48:53 pm
buen aporte!

recuerdo que en el 2007 estaba vulnerando los websites del guestbook mediante inyecciones HTML... en ese tiempo recuerdo que vi miles de tutoriales para defacear webs, sin embargo, el que vi para vulnerar guestbook (y muchos otros por el estilo) solamente mostraba como explotar el fallo y no una explicacion detallada de la vulnerabilidad (la parte importante que es donde uno adquiere los conocimientos)...

claro que en ese tiempo no me iba a quedar solamente con esa info... asi que hice una especie de lab (colocando una pc como servidor http) y asi me puse a detallar varios tipos de bugs a nivel web...

buen aporte, no solamente muestra la vulnerabilidad sino que tambien la detalla...

saludos!
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Leviatan en Abril 21, 2012, 07:10:39 pm
2fac3r podias seguir con este rollo asi me voy quedando por que en lo de violar webs ando fojillo...

un saludo
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: coco en Abril 26, 2012, 07:43:46 am
Seve interesante  buen aporte saludos .
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Infectedbug en Mayo 16, 2012, 11:18:38 pm
2Fac3R tengo un problema con el guestbook vulnerable, no entiendo que tengo que cambiar en los datos de
Código: [Seleccionar]
# Reemplazar por tus datos:
$serv = "localhost";
$user = "root";
$pass = "root";
$db = "prueba";
por lo tanto me tira este error: Error en la seleccion de la bdCan't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)


Recien me estoy metiendo en esto de los servidores web , y hay varias cosas que no entiendo. gracias
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: 2Fac3R en Mayo 16, 2012, 11:22:50 pm
2Fac3R tengo un problema con el guestbook vulnerable, no entiendo que tengo que cambiar en los datos de
Código: [Seleccionar]
# Reemplazar por tus datos:
$serv = "localhost";
$user = "root";
$pass = "root";
$db = "prueba";
por lo tanto me tira este error: Error en la seleccion de la bdCan't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)


Recien me estoy metiendo en esto de los servidores web , y hay varias cosas que no entiendo. gracias

$serv --> Servidor
$user --> Usuario
$pass --> Contraseña
$db --> Base de datos

Tienes que poner los datos que tengas configurado.
PD: Si vas iniciando no te recomiendo te adentres directo con la Auditoria Web, sino con la Programación.
Zalu2
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Krakakanok en Mayo 17, 2012, 12:57:10 am
2Fac3r el post es muy instructivo, facil sencillo y para toda la familia.

Has puesto los ejemplos tipicos que se entienden perfectamente, muy bien explicado.

Un consejo, antes de hacer HTML injection, es necesario saber HTML. Se que es logico, pero muchos todavia preguntan cosas por el estilo.

Para todo lo demas usa Yahoo. Copyright Mastercard.


Saludos.
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Infectedbug en Mayo 17, 2012, 02:30:27 am
2Fac3R tengo un problema con el guestbook vulnerable, no entiendo que tengo que cambiar en los datos de
Código: [Seleccionar]
# Reemplazar por tus datos:
$serv = "localhost";
$user = "root";
$pass = "root";
$db = "prueba";
por lo tanto me tira este error: Error en la seleccion de la bdCan't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)


Recien me estoy metiendo en esto de los servidores web , y hay varias cosas que no entiendo. gracias

$serv --> Servidor
$user --> Usuario
$pass --> Contraseña
$db --> Base de datos

Tienes que poner los datos que tengas configurado.
PD: Si vas iniciando no te recomiendo te adentres directo con la Auditoria Web, sino con la Programación.
Zalu2


sisi eso lo entendí, solo que no se de donde sacar esos datos, porque monte un servidor apache2 en mi BT , pero en ningún momento configure esos datos
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: 2Fac3R en Mayo 17, 2012, 03:36:19 am
sisi eso lo entendí, solo que no se de donde sacar esos datos, porque monte un servidor apache2 en mi BT , pero en ningún momento configure esos datos

Eso pasa cuando tratas correr sin saber gatear.

servidor --> localhost (En este caso ya que lo tienes en tu servidor local)
usuario --> root (por defecto lo corremos todo con root, por ahora no te lies con privilegios de usuarios ni nada de eso)
password --> toor (por defecto es toor o está en blanco, https://dev.mysql.com/doc/refman/5.0/en/set-password.html)
base de datos --> Ésta la creas tu mismo (te lo dejo a ti), tienes muchas opciones.

Hazme caso y no inicies con esto antes de tener conocimientos basicos de Programación Web.
Zalu2
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Infectedbug en Mayo 17, 2012, 07:30:17 pm
sisi eso lo entendí, solo que no se de donde sacar esos datos, porque monte un servidor apache2 en mi BT , pero en ningún momento configure esos datos



Eso pasa cuando tratas correr sin saber gatear.

servidor --> localhost (En este caso ya que lo tienes en tu servidor local)
usuario --> root (por defecto lo corremos todo con root, por ahora no te lies con privilegios de usuarios ni nada de eso)
password --> toor (por defecto es toor o está en blanco, https://dev.mysql.com/doc/refman/5.0/en/set-password.html)
base de datos --> Ésta la creas tu mismo (te lo dejo a ti), tienes muchas opciones.

Hazme caso y no inicies con esto antes de tener conocimientos basicos de Programación Web.
Zalu2

vale, muchas gracias (:
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: @NetFcruz en Agosto 07, 2012, 06:51:21 pm
Buen tuto amigo.
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Bryan20 en Agosto 08, 2012, 12:17:03 am
Demaciadamente Muy Bien Explicado! :P!


Gracias Bro!
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Luis_1984 en Agosto 08, 2012, 01:14:24 am

Hola soy nuevo en esto,hace años estuve estudiando con los cuadernos pero el portal no estaba, y ahora
estoy practicando injeccion sql pero el link con las practicas no estan me puedes ayudar?
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: @NetFcruz en Agosto 08, 2012, 01:50:04 am

Hola soy nuevo en esto,hace años estuve estudiando con los cuadernos pero el portal no estaba, y ahora
estoy practicando injeccion sql pero el link con las practicas no estan me puedes ayudar?

Disculpa Luis este no es el tema, no lo distorciones, Ademas pasa por las presentaciones porfavor.
Saludos...
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Luis_1984 en Noviembre 15, 2012, 03:48:28 pm
Ok esta bien disculpen, Me pueden ayudar con el reto del buscador 2.. bueno darme pistas
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: Caballoporvena en Enero 21, 2013, 08:33:23 am
Buen tuto 2fac se agradece
Título: Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
Publicado por: AdriiánJC en Febrero 23, 2013, 07:58:48 pm
Valla, Valla Excelente Gracias por el manual.