BorrowBits - ciencia y tecnología

Seguridad Web al limite: JS-Injection

seguridad-paginas-webHace unos meses os comentaba en un artículo la importancia de validar los datos en el servidor, puesto que las validaciones en el cliente son fácilmente manipulables.

Como también comentamos, esto podría resultar por parte de algún usuario mal intencionado, en que nuestra base de datos podía plagarse de datos “no deseados”, como por ejemplo, texto en campos puramente numéricos, o direcciones de email no válidas.

¿Aquí queda todo? NO.

¿Qué es el ataque de inyección de código JavaScript?

Lo vamos a explicar con un pequeño “juego”:

El siguiente código php, muestra un formulario y lista los usuarios ya almacenados en la base de datos:

articulo_js_1articulo_js_2

 

 

 

El problema, como veréis en el código, es que al no validar los datos en servidor, podéis introducir como nombre lo que querais:

<?php
include('db_conection.php');

if(!empty($_POST['nombre']))
        mysql_query('INSERT INTO `js_injection`(`nombre`) 
                                               VALUES ("'.$_POST['nombre'].'")');    

$request = mysql_query('select * from `js_injection`');
?>

<html>
<body>
        <h2>Listado</h2>
        <ul>
        <?php while($row = mysql_fetch_array($request)){?>
                <li><?php echo $row['nombre']; ?></li>
        <?php } ?>
        </ul>
        <h2>Registrate</h2>
        <form method="post">
                Registra tu nombre:<input name="nombre" type="text"/>
                <input type="submit"/>  
        </form>
</body>
</html>

Por tanto, si algún gracioso se diera cuenta de ello, podría literalmente cargarse nuestra página:

Vamos a intentar introducir el siguiente código JavaScript en el campo de texto nombre:

<script>while(true) alert('atacke js injection');</script>

articulo_js_3articulo_js_4

 

 

 

Al imprimir la lista de nombres desde PHP, el código resultante incluye un bucle infinito que muestra todo el tiempo una ventana, y el navegador interpreta y ejecuta perfectamente al tratarse de código JavaScript.

Ahora la página ha quedado bloqueada y lista para no poder ser usada.

Este tipo de ataque puede dar mucho de si. ¿Os imagináis que podría ocurrir si pudiéramos hacer que se ejecutara el código JavaScript que deseemos en una zona privada de una web?

Ampliaré en futuros artículos más información sobre este tema, y sobre otro tipo de inyecciones.

Saludos y gracias.

plfgavilan

Ingeniero de telecomunicaciones con casi 4 años de experiencia en la ingeniería de software. Forma parte del proyecto Borrowbits desde hace varios años, donde colabora como escritor.

Escribir un comentario

Suscríbete

¡Sácale el máximo partido a BBits!

Introduce tu dirección de correo electrónico para seguir este Blog y recibir por email las nuevas publicaciones, si has leído y aceptas las Políticas de Privacidad, Cookies y Aviso Legal.

Recíbelo gratis al suscribirte

Webs amigas

  • Frikilogia.- Blog Multi-Tematico orientado a todos los campos del frikismo.
  • Meridiem90.tv.- Mira la TV gratis en HD. Canal Plus y Gol TV, todo el futbol desde tu navegador.
  • JITKey.- Startup enfocada en la gestión de alojamientos turísticos.

Bits del pasado

Síguenos en FB