Problemas de balances de materia y energiaDescripción completa
un LM35, amplifique la salida para obtener una escala de 0V – 10V, visualice la medición de temperatura mediante leds, usando el LM3914 u otro integrado que facilite realizar la visualizació…Descripción completa
Grupo 208002_3_consolidado- Colaborativo Unidad2
trtrDescripción completa
Filosofía en la edad media
Descripción completa
trabajo
EJERCICIOS
UNIDAD 2. OBJETIVO. Determinar si existen vulnerabilidades en los programas que se muestran a continuación y corregirlos en caso necesario.
ENUNCIADO.
Ejercicio 1 El siguiente código presenta una o varias vulnerabilidades, cuáles son? Mostrar una captura de pantalla que demuestre la/s vulnerabilidad/es existentes e indicar una solución que elimine estos bugs en el programa import java.io.*; import java.lang.*; public class Main { public static void main(String[] args) { try { System.out.println("Por favor, introduzca su nombre:"); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String buf = br.readLine(); Runtime runtime = Runtime.getRuntime(); String[] catCommand = new String[3]; catCommand[0] = "/bin/sh"; catCommand[1] = "-c"; catCommand[2] = "cat /home/centos/" + buf; Process proc = runtime.exec(catCommand); InputStream isAux = proc.getInputStream(); InputStreamReader isrAux = new InputStreamReader(isAux); BufferedReader brAux = new BufferedReader(isrAux); String line; while ((line = brAux.readLine()) != null) { System.out.println(line); } } catch (Exception exc) { exc.printStackTrace();
} } } Notas: El código se encuentra en la ruta: /home/centos/cursoSCJ/Practicas/Practica2/ejercicio1 Sintaxis para compilar: desde el directorio ejercicio1 ejecutar javac Main.java Sintaxis para ejecutar java Main
Ejercicio 2 Detectas alguna vulnerabilidad en el siguiente programa? En caso de ser así, demuéstralo y propón una solución. Para la solución propuesta, demuestra que con el mismo ataque anterior, el programa ya no presenta la vulnerabilidad. Para acceder a este servlet, la URL de llamada es: http://IP:8080/Practica2Ejer2/login.html Código login.html SQL INJECTION EXAMPLE Código Ejercicio2.java package com.s21sec.cursoASA; import java.io.*;
} catch (Exception e) { e.printStackTrace(); } } } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doGet(req,res); } } Notas: El código se encuentra en la ruta: /usr/local/apache-tomcat7.0.33/webapps/Practica2Ejer2 Para compilarlo, desde el directorio Practica2Ejer2: javac -classpath "WEB-INF/classes/.:WEB-INF/lib/servlet.jar:WEBINF/lib/postgresql-8.3-603.jdbc3.jar" /usr/local/apache-tomcat7.0.33/webapps/Practica2Ejer2/src/com/s21sec/cursoASA/Ejercicio2.java Nos deja el Ejercicio2.class en la misma ruta que el .java. Hay que copiar este .class en /usr/local/apache-tomcat-7.0.33/webapps/Practica2Ejer2/WEBINF/classes/com/s21sec/cursoASA Como definimos el servlet Ejercicio2 en el web.xml, hay que reiniciar el tomcat. Para ello, desde /usr/local/apache-tomcat-7.0.33/bin ejecutamos: sudo ./catalina.sh stop sudo ./catalina.sh start
Ejercicio 3. Detectas alguna vulnerabilidad en el siguiente programa? En caso de ser así, demuéstralo y propón una solución. Para la solución propuesta, demuestra que con el mismo ataque anterior, el programa ya no presenta la vulnerabilidad. ejercicio.jsp <%@page import="java.io.*"%> <%@page import="java.lang.*"%> <%
String comentarios = null; if (request.getParameter("comments") != null && request.getParameter("comments").length() > 0) { comentarios = request.getParameter("comments"); } String filename = "/usr/local/apache-tomcat7.0.33/webapps/Practica2Ejer3/comments.txt"; if (comentarios != null) { FileInputStream fis = null; BufferedInputStream bis = null; DataInputStream dis = null; try { //write the comments to comments.txt, then close up the file operation FileWriter fw = new FileWriter(filename,true); BufferedWriter bw = new BufferedWriter(fw); bw.write(comentarios + "\n"); bw.close(); // open up comments.txt for reading, read from it, then close it File fr = new File(filename); fis = new FileInputStream(fr); bis = new BufferedInputStream(fis); dis = new DataInputStream(bis); StringBuffer allComments = new StringBuffer(); while (dis.available() != 0){ String aa = dis.readLine(); allComments.append(aa); } fis.close(); bis.close(); dis.close(); out.print(allComments); } catch (Exception e) {e.printStackTrace();} } else {%> <%}%> Notas:
El código se encuentra en /usr/local/apache-tomcat-7.0.33/webapps/Practica2Ejer3
Ejercicio 4 El siguiente código presenta una vulnerabilidad de xss, podríais explotarlo? Modificar el código con los cambios necesarios para eliminar el bug. formulario.html xss.jsp ejercicio8 <% String variable = request.getParameter("vuln");%> Has escrito: Notas: el código se encuentra disponible en /usr/local/apache-tomcat7.0.33/webapps/Practica2Ejer4
Ejercicio 5 Supongamos que queremos que nuestra aplicación sólo pueda acceder a las webs que muestra la página navigation.htm Consideras que esta aplicación lo cumple? Es esta aplicación sensible a un ataque cross-frame-scripting? En caso de que así lo sea, propón una solución para que la aplicación haga lo que se requiere.
XFSIndex.jsp Welcome to my site navigation.htm <meta http-equiv="Content-Type" content="text/html";charset="utf-8"/> Menu
Nota el código se encuentra disponible en /usr/local/apache-tomcat7.0.33/webapps/Practica2Ejer5
Ejercicio 6 Indicar junto con una explicación la opción correcta en las siguientes preguntas 1. ¿Cuál es la técnica de ataque utilizada para explotar sitios web mediante la alteración de consultas de BD? A. LDAP Injection B. XML Injection C. SQL Injection D. Bling XML Injection 2. Ataque que explota la confianza que un sitio tiene en el navegador de un usuario A. Session Hijacking B. Cross Site Request Forgery C. Inyección D. XFS (Cross Frame Scripting) 3. ¿Qué sucede cuando una aplicación toma los datos introducidos por un usuario y los envía al navegador web sin realizar una correcta validación y escapado de los datos? A. Configuración incorrecta de seguridad B. XSS C. CSRF D. Referencia indirecta a objetos 4. ¿Qué ataque puede ejecutar scripts en el navegador y es capaz de robar sesiones de usuario o redirigir al usuario a sitios maliciosos? A. Inyección SQL B. XSS C. Subida de software malicioso D. Man in the Middle
5. ¿Qué ataque se puede evitar si protegemos con un token aleatorio cada enlace y formulario que pueda provocar una acción en la aplicación (por ejemplo, una compra)? A. Inyección de comandos B. Cross Site Scripting C. Cross Site Request Forgery D. Cross Site Tracing 6. Las vulnerabilidades de inyección SQL se pueden evitar aplicando el siguiente algoritmo a cada entrada de usuario: sustituyendo cada aparición de & con & las de < con <, las de > con > y las de “ con " A. Verdadero B. Falso 7. Esta técnica de ataque se utiliza cuando una aplicación web es vulnerable a un ataque de inyección SQL pero los resultados de la inyección no son visibles para el atacante. A. Unique SQL Injection B. Blind SQL Injection C. Generic SQL Injection D. Double SQL Injection 8. Se trata de un ataque que aprovecha que la página web muestra los datos de usuario sin antes validarlos. Mira este enlace, muy interesante A qué ataque nos referimos? A. B. C. D.
Cross Site Scripting SQL Injection Http Response Split Desbordamiento de buffer
9. Identifica qué tipo de ataque se está produciendo en el siguiente diagrama
A. B. C. D.
Ataque CSRF Ataque SQL Injection Ataque XSS Ataque de fijación de sesión
10. En un ataque XSS típico, el atacante infecta una página web legítima con código malicioso. Cuando un usuario visita esta página, el código se descarga y se ejecuta en el navegador del usuario A. Verdadero B. Falso