100% encontró este documento útil (1 voto)
394 vistas7 páginas

2023 Modeloa

El documento presenta instrucciones para un examen de Seguridad en Sistemas, Aplicaciones y Big Data. El examen consta de preguntas de tipo test y preguntas de desarrollo. Las preguntas de test contienen 10 preguntas con una única respuesta correcta sobre temas de seguridad como vulnerabilidades, autenticación y autorización. Las preguntas de desarrollo piden explicar vulnerabilidades como XSS y HTTP Response Splitting, analizar código vulnerable y explicar autenticación basada en formularios.

Cargado por

Irene AbHr
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
394 vistas7 páginas

2023 Modeloa

El documento presenta instrucciones para un examen de Seguridad en Sistemas, Aplicaciones y Big Data. El examen consta de preguntas de tipo test y preguntas de desarrollo. Las preguntas de test contienen 10 preguntas con una única respuesta correcta sobre temas de seguridad como vulnerabilidades, autenticación y autorización. Las preguntas de desarrollo piden explicar vulnerabilidades como XSS y HTTP Response Splitting, analizar código vulnerable y explicar autenticación basada en formularios.

Cargado por

Irene AbHr
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

DATOS PERSONALES FIRMA

Nombre: Miguel DNI:


Apellidos: Tejero Batanero
ESTUDIO ASIGNATURA CONVOCATORIA

MÁSTER UNIVERSITARIO 14136.- SEGURIDAD EN


Ordinaria
EN CIBERSEGURIDAD SISTEMAS, APLICACIONES Y
EL BIG DATA Número periodo 6320
(PLAN 2022)

CIUDAD DEL
FECHA MODELO
EXAMEN

07-09/07/2023 Modelo - A

Etiqueta identificativa

INSTRUCCIONES GENERALES
1. Lee atentamente todas las preguntas antes de empezar.
2. La duración del examen es de 2 horas.
3. Escribe únicamente con bolígrafo azul o negro.
4. No está permitido utilizar más hojas de las que te facilita la UNIR (puedes utilizar
folios para hacerte esquemas u organizarte pero no se adjuntarán al examen).
5. El examen PRESENCIAL supone el 60% de la calificación final de la asignatura. Es
necesario aprobar el examen, para tener en cuenta la evaluación continua.
6. No olvides rellenar EN TODAS LAS HOJAS los datos del cuadro que hay en la
parte superior con tus datos personales.
7. El DNI/NIE/PASAPORTE debe estar sobre la mesa y disponible para su posible
verificación.
8. Apaga el teléfono móvil.
9. Las preguntas se contestarán en CASTELLANO.
10. El profesor tendrá muy en cuenta las faltas de ortografía en la calificación final.

Código de examen: 208033


Puntuación
TEST1

 Puntuación máxima 4.00 puntos


 Solo hay una respuesta correcta. Los fallos no penalizan. Cada respuesta correcta
vale 0.40 puntos

DESARROLLO1

 Puntuación máxima 6.00 puntos


 Cada pregunta contestada correctamente vale 2.00 puntos

PREGUNTAS TIPO TEST

1. TRACE tiene la vulnerabilidad...

A. XSS
B. XST
C. SQLI
D. CSRF

2. ¿Cuál de opciones siguientes es una unidad lógica de servicios de Azure asociada a una
cuenta de Azure?

A. Subscripción de Azure
B. Grupo de Administración
C. Grupo de recursos
D. Ninguna de las anteriores.

3. ¿Qué componentes incorpora Azure Key Vault?

A. Almacenes
B. Secretos
C. Claves
D. Todas las anteriores

4. La derivación de requisitos de seguridad se basa en …

A. Modelado de amenazas
B. Análisis de riesgos
C. Análisis de seguridad del código fuente
D. La A y la B.

5. ¿Qué método HHTP sirve para saber qué otros métodos implementa el servidor?

Código de examen: 208033


A. GET
B. POST
C. OPTIONS
D. TRACE

6. Qué tipo vulnerabilidad contiene el siguiente fragmento de código?<HTML><TITLE>HOLA!


</TITLE>Hi<SCRIPT>var pos=document.URL.indexOf("name=")
+5;document.write(document.URL.substring(pos,document.URL.length));</SCRIPT>
Bienvenido al sistema
…</HTML>

A. PATH TRAVERSAL.
B. SQLI.
C. XSS.
D. HTTP RESPONSE SPPLITING.

7. Defensas de cabecera Set-cookie...

A. TLS
B. PATH
C. HTTPONLY
D. TODAS LAS ANTERIORES

8. DAC con respecto al servicio de autorización significa:

A. Gestión de autorización delegada


B. Gestión de autorización centralizada
C. Gestión de autorización mixta
D. Ninguna de las anteriores

9. ¿Donde puede ubicarse el ID de sesión?

A. CABECERA SET COOKIE


B. PARÁMETRO GET
C. PARÁMETRO POST
D. TODAS LAS ANTERIORES SON CIERTAS

10. KERBEROS usa...

A. Token
B. Tikect
C. Assertion
D. Token y Asertion

Código de examen: 208033


PLANTILLA DE RESPUESTAS
Preguntas / Opciones A B C D

1 X

2 X

3 X

4 X

5 X

6 X

7 X

8 X

9 X

10 X

Código de examen: 208033


PREGUNTAS DE DESARROLLO

Cada pregunta bien contestada puntúa 2 puntos

1. Desarrollar las siguientes preguntas:

1. Explicar las vulnerabilidades HTTP RESPONSE SPLITTING y XSS, aportar ejemplos o


supuestos de explotación (payloads) y como mitigarlas.

HTTP Response Splitting: Consiste en una vulneabilidad que permite la entrada de ctr lf, es
decir permite usar \n\r, esto lo que provoca es que http responda de forma desestructurada, es
decir devolvera la respuesta en varias lienas, lo que puede ayudar al atacante a obtener
información que no se deseaba compartir o bien, le permitirá añadir codigo.

Una buena forma de mitigara consiste en analizar los valores de entrada y verificarlo, tambien
es comun el usar librerias de owasp como por ejemplo usar la funcion
encoderURL.encode( data, “UTF-16”) esto hará que los datos introducidos por el usuario sean
validados.

XSS: esta vulnerabildad (croos site scripting) consiste en permitir al atacante añadir codigo el
cual será ejecutado por la victima en su navegador, especialmente scripts.

Las mejores formas de mitigarlo nuevamente es usar la libreria owasp en java a cual nos
permite verificar los datos de entrada, como por ejemplo el uso de la funcion
Encode.forhtml(data), esto nos permitirá verificar los datos de entrada, impidiendo asi al
atacante añadir scripts.

2. Determinar en el siguiente fragmento de código:

(1.00 punto) Qué tipo vulnerabilidad contiene, línea de código de entrada del dato malicioso
(SOURCE), línea de código que ejecuta la vulnerabilidad (SINK).

La vulnerabilidad que contiene es LFI (LocalFileInsercion) o Path Transversal

Source: Linea 20

Sink: Linea 24

(1.00 punto) modificar/añadir código para que solucione la vulnerabilidad.

1. public void bad() throws Throwable


2. { String data;
3. Logger log_bad = Logger.getLogger("local-logger");
4. data = ""; /* init data */
5. d

Código de examen: 208033


6. PreparedStatement statement = null;
7. ResultSet rs = null;
8. BufferedReader buffread = null;
9. InputStreamReader instrread = null;
10. /* setup the connection */
11. conn = IO.getDBConnection();
12. statement = conn.prepareStatement("select name from users where id=?");
13. /* get user input for the userid */
14. IO.writeLine("Enter a userid to login as (number): ");
15. instrread = new InputStreamReader(System.in);
16. buffread = new BufferedReader(instrread);
17. int num = Integer.parseInt(buffread.readLine());
18. statement.setInt(1, num);
19. rs = statement.executeQuery();
20. data = rs.getString(1);
21. String root = "C:\\uploads\\";
22. File fIn = new File(root + data);
23. if( fIn.exists() && fIn.isFile() )
24. { IO.writeLine(new BufferedReader(new FileReader(fIn)).readLine());}
25. …

2b) Respues a la correccion del codigo:

1. public void bad() throws Throwable


2. { String data;
3. Logger log_bad = Logger.getLogger("local-logger");
4. data = ""; /* init data */
5. Connection conn = null;
6. PreparedStatement statement = null;
7. ResultSet rs = null;
8. BufferedReader buffread = null;
9. InputStreamReader instrread = null;
10. /* setup the connection */
11. conn = IO.getDBConnection();
12. statement = conn.prepareStatement("select name from users where id=?");
13. /* get user input for the userid */
14. IO.writeLine("Enter a userid to login as (number): ");
15. instrread = new InputStreamReader(System.in);
16. buffread = new BufferedReader(instrread);
17. int num = Integer.parseInt(buffread.readLine());
18. statement.setInt(1, num);
19. rs = statement.executeQuery();
20. data = rs.getString(1);
21. data = f_verificacion(data); Linea añadida
22. String root = "C:\\uploads\\";
23. File fIn = new File(root + data);
24. if( fIn.exists() && fIn.isFile() )
25. { IO.writeLine(new BufferedReader(new FileReader(fIn)).readLine());}
26. …

Código de examen: 208033


Se creará una funcion llamada f_verificacion, la cual se encargará de contener una lista blanca
de opciones validas, si data es igual a una de estass opciones, devolverá data en cambio si el
valor de data no esta incluido dentro de estas opciones la función devolvera “”.

3. Explicar el método de autenticación basado en formularios (esquema de


funcionamiento). Vulnerabilidades y ataques que pueden sufrir. Recomendaciones de
seguridad para este método basado en formularios y en general para la autenticación.

Este metodo se basa en que el cliente responde una serie de datos, los cuales son
comprobados en el Servidor gestor de base de datos y si son correctos se le da acceso, se le
proporciona un ID de sesion que irá colocado en la cabecera set cookies.

Los principales ataques que pueden sufrir son sqli(injeccion de sql) al realizar las consultas en
bases de datos la injeccion de sql podria permitir al atacante acceder a distintos campos de la
base de datos.

Se recomienda almacenar las contraseñas hasheadas en la base de datos, comprobar las


entradas para evitar ataques como por ejemplo sqli, seleccionar un tiempo de id de sesion una
vez pasado ese tiempo caduque, que el id sea totalmente aleatorio, proporcionar formas de
cierre de sesion, ademas se deberia obligar al usuario a tener contraseñas fuertes, que no
permita introducir la contraseña erronea en numerosas ocasiones u obligar al usuario a
cambiar la contraseña cada x tiempo.

(Responder en 1 caras)

Código de examen: 208033

También podría gustarte