210 likes | 431 Views
HOL-PIT04. ProtegeIT! Web Security. Pedro Laguna plaguna@informatica64.com. Agenda. Introducción SQL Injection SQL Injection básico SQL Injection en base a errores Blind SQL Injection Blind SQL Injection en base a tiempos / Consultas pesadas XPath Injection / Blind XPath Injection
E N D
HOL-PIT04 ProtegeIT!Web Security Pedro Laguna plaguna@informatica64.com
Agenda • Introducción • SQL Injection • SQL Injection básico • SQL Injection en base a errores • Blind SQL Injection • Blind SQL Injection en base a tiempos / Consultas pesadas • XPath Injection / Blind XPath Injection • LDAP Injection / Blind LDAP Injection
Agenda • Ejecución de código de lado del cliente • XSS • CSRF • Ejecución de código de lado del servidor • Remote File Inclusion • Local File Inclusion • Web Trojans • Paginas Flash • Google Hacking
Introducción • Actualmente las paginas web son el escaparate de las empresas en internet • Son el objetivo mas atractivo para los atacantes • Las diversos lenguajes de programación y tecnologías web dan pie a múltiples maneras de atacar un servidor. • La seguridad web se basa en conocer estas técnicas y en saber como contrarrestarlas
SQL Injection • La inclusión de código SQL en la aplicación puede suponer un grave riesgo de seguridad • Las variables no controladas son el principal punto de entrada de estas vulnerabilidades • Las comillas simples o dobles permiten cerrar y modificar las sentencias introducidas por el programador • Existen diferentes técnicas según el entorno con el que nos enfrentemos
SQL Injection Básico • El ejemplo mas básico de SQL Injection ocurre en los campos de login • Podemos introducir SQL Injection para logearnos sin credenciales validas • SELECT * FROM usuarios FROM usuario = ‘$usuario’ AND password = ‘$password’ ‘ or ‘1’=‘1 ‘ or ‘1’=‘1
SQL Injection en base a errores • Errores no controlados por el programador pueden dar información sobre la estructura de la base de datos • Los distintos motores de bases de datos dan errores mas o menos descriptivos • El lenguaje de programación también influye en la cantidad de información mostrada
Blind SQL Injection • A veces la pagina no nos muestra nada cuando insertamos SQL, estamos ante un SQL Injection a ciegas • Se basa en la lógica booleana y en la variación de la pagina al introducir sentencias del tipo: • ?id= 3 AND 1=1 Cierto • ?id=3 AND 1=0 Falso • Permiten extraer toda la información de la base de datos a base de hacer preguntas de Verdadero y Falso • Son muy lentas, aunque técnicas de reducción de charset permiten aligerarlas
Blind SQL Injection en base a tiempos / Consultas pesadas • A veces no se producen diferencias entre las paginas de verdadero y falso • Podemos obligar al motor de base de datos para que detenga la ejecución de la consulta durante un periodo de tiempo apreciable • A partir de entonces no comprobaremos cambios en la aplicación web, si no que mediremos tiempos de respuesta • Dependiendo del motor de base de datos lograremos el retraso de una manera distinta
XPath Injection / Blind XPath Injection • XPath es una técnica que permite consultar ficheros XML de una manera rápida y eficiente • Puede ser usado para almacenar información importante como usuarios y contraseñas • Al igual que en SQL podemos introducir parámetros modificados para generar una consulta siempre verdadera (equivalente al ‘ or ‘1’=‘1 en SQL Injection) • Blind XPath Injection es la técnica por la cual podemos llegar a extraer toda la información de un fichero XML consultado mediante XPath
LDAP Injection / Blind LDAP Injection • LDAP es un protocolo que permite acceder a información almacenada en forma de árbol • Al igual que las técnicas anteriores podemos generar parámetros modificados de tal manera que permitan la extracción de información sensible • Mediante Blind LDAP Injection podemos acceder a esta información sin necesidad de que la aplicación muestre por pantalla los datos recuperados • Dependiendo del entorno nos podemos encontrar dos tipos de Blind LDAP Injection: • OR Blind LDAP Injection • AND Blind LDAP Injection
XSS • XSS son las siglas de Cross Site Scripting • Es una técnica consistente en introducir código Javascript en la pagina • Existen dos tipos de XSS: • Permanente: Se guarda en la pagina y se muestra a cada persona que entre • No permanente: Se ejecuta al hacer clic sobre un enlace que contiene el código Javascript • Se pueden hacer cosas como robo de sesiones, defacements, ataques de phising o denegaciones de servicio
CSRF • Esta técnica consiste en la ejecución de comandos de manera no autorizada aprovechando las credenciales de un usuario • Mediante XSS podemos simular acciones sobre elementos de una aplicación aprovechando la cookie de sesión del usuario • <img src=http://sitio.com/logout /> • Formularios creados mediante Javascript y enviados automáticamente • Existen maneras de evitarlo como por ejemplo la comprobación de la cabecera Referer
Remote File Inclusion • Vulnerabilidad que permite la ejecución de código remoto en una aplicación • Es propia de lenguajes de programación interpretados, que permiten la carga de ficheros dinámicamente • include() y require() en PHP • Lo mas común es la inclusión de shells remotas que permitan el control total del servidor, como por ejemplo: • C99 • R57
Local File Inclusion • La inclusión de ficheros locales puede permitir conocer la estructura de un sitio • Si el servidor esta montado sin la estructura del mínimo privilegio podemos llegar a incluir ficheros del sistema como: • /etc/passwd • /etc/hosts • C:\Windows\System32\drivers\etc\hosts • Etc. • Paginas de plantillas o de descarga son las que mas comúnmente presentan este fallo
Webtrojans • La subida de ficheros a un servidor puede ser un peligro para la seguridad de nuestra aplicación • Comprobar solo la extensión del fichero a veces no es buena idea • Cabeceras y extensión han de ser confirmadas antes de copiar el fichero en nuestro sistema • Existen shells remotas listas para subir en cualquier lenguaje de programación que necesitemos
Paginas Flash • No dejes hacer a un diseñador el trabajo de un programador • Muchos webmasters creen que sus paginas realizadas en flash son seguras • Los ficheros flash podemos descargarlos y modificarlos a nuestro gusto • Incluir XSS en un fichero flash no es nada complicado y si posteriormente nos dejan subirlo hará mucho daño • Los ficheros flash guardan datos en local, en el perfil del usuario, con extensión .sol
Google Hacking • Google rastreara cualquier pagina que este enlazada • A veces Google llega mas lejos de lo que los administradores desearían • El fichero robots.txt permite limitar el rango de acción de los buscadores • Incluir ficheros y directorios no linkados en este fichero es una mala idea • Google permite una serie de comodines que nos permitirán refinar la búsqueda, haciendo nuestro trabajo mas eficiente
Technews http://www.informatica64.com/boletines.html
¿Preguntas? • Pedro Laguna • plaguna@informatica64.com • Informática 64 S.L. • i64@informatica64.com