• Inicio
  • Blog
  • Wargames
  • Buscar
  • Ingresar
  • Registrarse

    • Hack x Crack - Comunidad de Seguridad informática »
    • Seguridad Informatica »
    • Hacking »
    • Hacking web »
    • HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
    • Imprimir
    Páginas: [1] 2 3   Ir Abajo

    Autor Tema: HTML injection (Ataque y Defensa) [Practico] By 2Fac3R  (Leído 22657 veces)

    2Fac3R

    • Visitante
    HTML injection (Ataque y Defensa) [Practico] By 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.  #
    ##                                                                           ##
    ######################################
    En línea

    Desconectado deivid

    • { L5 } Smurf
    • *****
    • Mensajes: 636
    • Lo importante es no dejarse de hacer preguntas
      • Ver Perfil
    Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
    « Respuesta #1 en: Noviembre 22, 2011, 07:53:07 pm »
    Muy bueno el aporte, es bueno estar informado :D.
    En línea
    "La religión es como el pene. Está bien tener uno, está bien estar orgulloso de él, PERO NO está bien tratar de meterselo a la fuerza a los demás."

    Desconectado overload

    • { L7 } Juanker
    • *******
    • Mensajes: 1147
      • Ver Perfil
    Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
    « Respuesta #2 en: Noviembre 22, 2011, 08:08:05 pm »
    Que bueno 2FaC!
    Te lo fijo!

    Un saludo!
    En línea



    https://twitter.com/#!/overload_hxc
    http://www.overload-blog.blogspot.com

    Desconectado westernson

    • { L5 } Smurf
    • *****
    • Mensajes: 714
    • wester
      • Ver Perfil
    Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
    « Respuesta #3 en: Noviembre 22, 2011, 10:37:38 pm »
    Buen tuto  ;)
    Bytess
    En línea

    2Fac3R

    • Visitante
    Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
    « Respuesta #4 en: Noviembre 22, 2011, 11:51:09 pm »
    Gracias amigos, si hay dudas aca andamos ;)
    Zalu2
    En línea

    Desconectado 0xP01S0N

    • Pentesting & Web Pentest are my life!
    • { L7 } Juanker
    • *******
    • Mensajes: 1087
    • Codding since 2008 :3
      • Ver Perfil
      • 0xP01S0N labs
    Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
    « Respuesta #5 en: Noviembre 22, 2011, 11:58:12 pm »
    ¡Buen manual!
    ¡Un saludo, 2Fac!!
    3hy!
    En línea
    If you wanna be a pentester learn how to code your exploits. Then learn to use msf, monkey.





    Desconectado Infectedbug

    • Project Member
    • { L4 } Geek
    • *
    • Mensajes: 363
    • Python o die
      • Ver Perfil
    Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
    « Respuesta #6 en: Noviembre 23, 2011, 12:59:11 am »
    Muy bueno 2Fac3r :D
    En línea
    First they ignore you...
    Then they laugh at you...
    Then they fight at you...
    Then you win.

    Mohandas Gandhi



    Desconectado 3V1L

    • { L3 } Über
    • ***
    • Mensajes: 252
    • I'm going for you!
      • Ver Perfil
    Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
    « Respuesta #7 en: Enero 27, 2012, 02:39:50 pm »
    2Fac3R Great! bro! thanks!
    En línea

    ”There are only 10 types of people in the world — those who understand binary, those who don’t, and those who understand gray code”

    Desconectado RETRY

    • { L3 } Über
    • ***
    • Mensajes: 184
      • Ver Perfil
    Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
    « Respuesta #8 en: Febrero 05, 2012, 12:44:58 am »
    Gracias :D voy a ponerlo en practica
    En línea
    La sociedad paga para tener un sistema educativo de mierda, porque mientras mas idiotas salgan, más fácil es venderles algo, formando así dóciles consumidores.
    Empleaduchos graduados con sus títulos y nada en sus cabezas, creen saber algo, pero no saben nada.

    Desconectado <[Zoro]248>

    • { L7 } Juanker
    • *******
    • Mensajes: 1435
      • Ver Perfil
    Re:HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
    « Respuesta #9 en: Febrero 05, 2012, 03:02:22 am »
    Gracias por el aporte
    En línea
    La Ignorancia es Felicidad pero el Conocimiento te hace Libre!, pero al final tu decides

    • Imprimir
    Páginas: [1] 2 3   Ir Arriba
    • Hack x Crack - Comunidad de Seguridad informática »
    • Seguridad Informatica »
    • Hacking »
    • Hacking web »
    • HTML injection (Ataque y Defensa) [Practico] By 2Fac3R
     

    • SMF | SMF © 2013, Simple Machines
    • XHTML
    • RSS
    • WAP2
    Va un mudo y le dice a un sordo: Hack x Crack usa cookies. Pues eso... Learn more