Conceptos básicos de seguridad en el web (2 / 2)

En la entrega anterior platiqué de los conceptos teóricos básicos para aumentar la seguridad en web y, partiendo de esa base, ahora vamos a revisar los puntos de ataque prácticos más comunes en las aplicaciones web y como detectar los problemas.

Servidor

  1. Stack de servicio no actualizado
    Desde el sistema operativo hasta el servidor de aplicación, debe ser constantemente actualizado, porque es la manera más sencilla de vulnerar una aplicación web.
    Como detectar:
    Usando herramientas de detección de vulnerabilidades como Nessus.
  2. Servicios públicos no esenciales.
    Si no es necesario tener un servicio como ftp o ssh publico, no lo instales. Esto ayuda a reducir lo que se conoce como superficie de ataque.
    Como detectar:

    1
    
    nmap ip.de.servidor
    nmap ip.de.servidor
  3. Firewall
    Casi está de más decirlo. La mas básica linea de defensa.
  4. Rate Limiting
    En especial a los sistemas de autenticación (ssh, login en aplicación, etc), limitar el numero de solicitudes que se pueden hacer en poco tiempo es una herramienta muy útil para detener los ataques de fuerza bruta

Aplicación

  1. Sql Inyection
    Uno de los más comunes puntos de falla.  El no manejar correctamente el guardado en una base de datos, provoca que un usuario malicioso tenga acceso a datos a los que normalmente no tiene acceso. Es un problema resuelto hace mucho tiempo, que ya no debería suceder.
    Código típico:

    1
    2
    3
    
    <?php
    $result = mysql_query("insert into tabla (id) values (".$_GET['id'].")";
    ?>
    <?php
    $result = mysql_query("insert into tabla (id) values (".$_GET['id'].")";
    ?>
  2. Cross Site Scripting
    Es básicamente, inyección de código ajeno a la página original. Otra falla de validación que se solución limpiando los datos introducidos por el usuario para solo aceptar datos válidos.
    Código típico:

    1
    2
    3
    
    <?php
    echo "Bienvenido ". $_GET['usuario']
    ?>
    <?php
    echo "Bienvenido ". $_GET['usuario']
    ?>
  3. Cross Site Request Forgery
    Es ejecución de código en aplicaciones ajenos al entorno actual. Por ejemplo, ejecutar una operación al dar clic en un email. Se soluciona mediante el uso de “nonces”, o tokens de un solo uso en operaciones destructivas.
    Código típico:

    1
    2
    3
    4
    
    <?php
    //Procesar forma sin verificar el origen o referer
    proceso_destructivo($_GET['valor']);
    ?>
    <?php
    //Procesar forma sin verificar el origen o referer
    proceso_destructivo($_GET['valor']);
    ?>
  4. Directory Traversal
    Este es un problema muy común cuando se cargan archivos por parte del usuario. Este problema de seguridad permite acceder a archivos fuera del contexto esperado. Por ejemplo, acceder a un archivo de passwords en lugar de una fotografía. Con una propia validación de los nombres de archivos accedidos, es posible mitigar esta vulnerabilidad.
    Código típico:

    1
    2
    3
    
    <?php
    include("carpeta/".$_GET['url']);
    ?>
    <?php
    include("carpeta/".$_GET['url']);
    ?>
  5. Session Attacks
    Estas son vulnerabilidades poco exploradas pero muy comunes e igual de peligrosas.
    Session Fixation es una vulnerabilidad en la que es posible hacerse pasar por otra persona, por ejemplo, usando una cookie ajena. Puede estar causada por una pobre generación de seguridad en cookies.
    Session Poisoning es modificar una sesión ya activa para acceder a recursos que antes no era posible.  Por ejemplo, entrar a un servicio como usuario y modificar la cookie para volverse administrador.
    Código típico:

    1
    2
    3
    4
    
    <?php
    if($_COOKIE['isadmin'] == 1)
       es_administrador();
    ?>
    <?php
    if($_COOKIE['isadmin'] == 1)
       es_administrador();
    ?>

Usuario

  1. Social Engineering
    El mas común ataque al usuario, es provocar que el usuario revele datos o realice acciones con la persuasión del atacante. Las medidas tecnológicas son usualmente inútiles ante este tipo de ataques.

Conociendo mejor este tipo de ataques, es posible mitigarlos y minimizar los riesgos en las aplicaciones web.

Infraestructura Comentarios desactivados en Conceptos básicos de seguridad en el web (2 / 2)

Comentarios cerrados.