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