sábado, marzo 11, 2017

Preguntas del examen de Seguridad en Aplicaciones Web de la UEM 2017

Ayer fue el día en que mis alumnos del Master de Seguridad de la UEM tenían que hacer el examen del modulo de Seguridad en Aplicaciones. Este año, además, aprovechamos para ir en uno de los días de clase a la RootedCON, así que entre las preguntas que cayeron estaba una relativa a la charla que allí dimos. 

Figura 1: Preguntas del examen de Seguridad en Aplicaciones Web de la UEM 2017

Como suelo hacer, os dejo lo que les pregunté. Cosas sencillas, para que me quede claro si han aprendido los conceptos básicos de este módulo. Os las dejo por aquí por si los que estáis estudiando las queréis comprobar. Además, os dejo enlaces a algunos artículos que detallan las respuestas.

1.- Dada una aplicación PHP que utiliza MySQL como motor de base de dato. y es vulnerable a SQL Injection en el programa miprog.php?id=1 que muestra noticias. Explicar cómo sería un ataque de Blind SQL Injection para sacar la versión del motor de la base de datos.

Los ataques Blind SQL Injection se basan en hacer una booleanización de los datos que se buscan utilizando patrones de reconocimiento de las repuestas True o False basados en mensajes de error, cambios en las respuestas de la web, tiempos de respuesta o sumas lineares de valores ASCII. Una vez encontrada la vulnerabilidad se puede explotar manualmente con consultas del tipo miprog.php?id=1 and 54>ASCII(Substr(version(),1,1). En el vídeo se puede ver la explotación SQLbFTools

Figura 2: Blind SQL Injection en MySQL con SQLbTools

2.- Dada una aplicación PHP que utiliza MySQL como motor de base de dato. y es vulnerable a SQL Injection en el programa miprog.php?id=1 que muestra noticias. Explicar cómo sería un ataque de Time-Based Blind SQL Injection para sacar la versión del motor de la base de datos.

En este caso es necesario utilizar un ataque de Time-Based Blind SQL Injection. En MySQL se pueden utilizar las funciones de retardo de tiempo explícito "sleep()" a partier de MySQL 5 o superior, las funciones intensivas en cómputo Benchmark o los ataques con Heavy Queries.

Figura 3: Time-Based Blind SQL Injection using Heavy Queries

3.- Una aplicación web cuenta con un programa download.php?file=doc.pdf que es vulnerable a técnicas de LFI (Local File Inclusion) o RFD (Remote File Downloading). Explica cómo sacarías las credenciales de acceso de la aplicación a la base de datos.

Si se pueden descargar ficheros del servidor con un Local File Inclusion o con técnicas de Remote File Downloading, al final te pueden inspeccionar el código Server-Side para ver dónde está configurada la conexión a la base de datos. En este artículo se explica un proceso completo: Cómo te pueden robar la Base de Datos de tu sitio web con bugs de Path Transversal & Local File Inclusion.

4.- Una aplicación ASP tiene un formulario de login vulnerable a SQL Injection en el campo de usuario. Explica alguna combinación que pudiera utilizarse para intentar hacer login con el usuario Chema sin conocer la password del mismo.

Esta es una pregunta básica de SQL Injection. Dependiendo del motor de bases de datos y la creación de la consulta SQL que haya hecho el programador habrá muchas pequeñas diferencias (incluso si está hecho con Inverted SQL Queries). Pero lo más básico sería probar un Chema';--

5.- Dada una aplicación ASP que muestra un listado de alumnos de una clase con nombre y apellidos con el siguiente comando SQL:

Select nombre, apellidos from alumnos where clase=‘+$clase+’;

Donde $clase se recibe como parámetro GET mediante listado.asp?clase=primeroA. Describe cómo sería un ataque Inband para sacar los usuarios y contraseñas de la tabla USERS (UID,PWD) por pantalla

En este caso se trata de un ataque UNION para usar el mismo Recordset que utiliza el programador, así que bastaría con hacer que la consulta original no devolviera ningún dato y enlazar la nuestra. Algo como: clasequenoexiste' UNION SELECT UID,PWD FROM USERS;--

Figura 4: Feliz 15 aniversario SQL Injection

6.- Describe en qué consiste un ataque de SQL Injection OutBand basado en errores ODBC

En la conferencia de arriba lo tenéis descrito. Se trata de conseguir ver la información que se quiere extraer de la base de datos usando los mensajes de error ODBC. Esta técnica fue descrita por David Litchfield en el año 2001 en el paper: Web Application Disassembly with ODBC Error Messages. Yo la utilicé combinada con los ataques de Serialized SQL Injection tiempo atrás.

7 .- Describe en qué consiste el ataque de Rogue DirtyTooth Speaker contra terminales iOS y qué mecanismos podría poner Apple para minimizar su impacto.

Esta pregunta es fácil si has atendido a la conferencia de la RootedCON y has leído el artículo en cinco partes que publiqué esta semana: DirtyTooth Hack.


Figura 5: Cómo funciona DirtyTooth Hack


8.- Una página web tiene un login con un fichero login.swf que no hace Callback. ¿Qué habría que probar?

Tan sencillo como decompilar el SWF a ver qué sorpresas nos trae. Parece mentira, pero aún nos encontramos sitios en los que el login se basa en eso.

9.- Una tienda online usa un sistema de venta de productos pero un cliente ha comprado un producto por la mitad de su precio. ¿Cuál puede haber sido el fallo? ¿Cómo se ha podido explotar?

Probablemente se trate de un error clásico en el que el programador ha utilizado el precio que le llega desde el cliente en lugar del precio de la base de datos. El atacante puede cambiar ese valor con un proxy de interceptación igual que en el caso de La compañía de vuelo low-cost y la tasa de facturación anticipada. En el libro de Hacking Web Technologies se explican en detalle estas técnicas.

10.- Explica en qué consiste una tautología en un ataque de SQL Injection.

Las tautologías son valores que son siempre ciertos. Se usan para conseguir manipular el funcionamiento de una web inyectando condiciones que anulan el resto de las comprobaciones. Especial mención de esto al artículo de las "quasi-tautologies" que también pueden utilizarse.

Hasta aquí el examen que hicieron mis alumnos. Ahora espero que las notas que saquen todos sean muy buenas y que te haya entretenido ver lo que aprenden en clase.

Saludos Malignos!

3 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Hasta q punto entornos desarrollados en IoC podrian estar en peligro con tecnicas similares a las de injection q has nombrado? la pregunta viene pq si estos programas son abiertos a actualizacion modular.. no pueden ser afectados?

    ResponderEliminar
  3. Alonso he intentado contactarme contigo para resolver algunas dudas de tu blog y no he dado con un form de contacto, solo con redes sociales en las cuales no he obtenido respeusta tuya.
    Soy de Argentina, me indicas por favor? Saludos

    ResponderEliminar