Identificar y mitigar la vulnerabilidad de path traversal en la funcionalidad de descarga de archivos, asegurando que solo los archivos legítimos y predefinidos sean accesibles mediante restricciones apropiadas en el código del servidor.
Paso 1.
Haz clic en el menú Register.
Paso 2:
Se abrirá un formulario de registro en una nueva pestaña. Haz clic en el botón Register sin ingresar ningún dato.
Resultado:
Confirmación de validación del lado del cliente:
Paso 3:
Copia el enlace del formulario y pégalo en Firefox
Paso 4:
Deshabilita JavaScript en el navegador para comprobar cómo un atacante podría eludir la validación del lado del cliente abriendo una nueva pestaña y colocando about:config
en la barra direcciones.
Dar clic en Accept the Risk and Continue
.
En la barra de búsqueda, colocar javascript.enabled
.
Dar clic en el boton de alternan (encerrado en cuadrado rojo) para que el valor cambie a false
.
Paso 5:
Con JavaScript deshabilitado y sin colocar ningún dato adicional, haz clic en el botón Register.
Conclusión:
La validación de entrada debe realizarse siempre del lado del servidor, ya que las validaciones del lado del servidor son más confiables que las del lado del cliente.
Paso 6:
Para implementar la validación del lado del servidor en el formulario de registro, ve a la pestaña Redirect.jsp e inserta la siguiente función de validación en la línea n.º 66:
Pattern p = Pattern.compile("^[a-zA-Z]*$");
Pattern p1 = Pattern.compile("^([_a-zA-Z0-9-]+(\\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*(\\.[a-zA-Z]{1,6}))?$");
Pattern PASSWORD_PATTERN = Pattern.compile("((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})");
Matcher m = p.matcher(Name);
Matcher m1 = p1.matcher(email);
Matcher m2 = PASSWORD_PATTERN.matcher(pass);
if (Name.equals("null") || !m.matches()) {
msg = msg + "<br/>" + "Please Enter Valid Name";
val = 0;
}
if (email.equals(null) || !m1.matches()) {
msg = msg + "<br/>" + "Please Enter Valid Email Address";
val = 0;
}
if (gender.equals(null) || gender.equals("0")) {
msg = msg + "<br/>" + "Please Select Gender";
}
if (pass.equals(null) || !m2.matches()) {
msg = msg + "<br/>" + "Please Enter Valid Password";
val = 0;
}
if (confirmpass.equals(null) || !confirmpass.equals(pass)) {
msg = msg + "<br/>" + "Confirm Password doesn't match";
val = 0;
}
Paso 7:
Haz clic en el botón Save en la parte superior del editor para guardar los cambios.
Paso 9:
Haz clic en Register, y pega este nuevo formulario en Firefox con JavaScript deshabilitado como se indicó en el paso 3.
Paso 10:
Vuelve a habilitar JavaScript antes de pasar al siguiente laboratorio.
Paso 11:
Haz clic en el botón Reset para restaurar el laboratorio al estado anterior y haz clic en OK en el mensaje emergente que indica “¡Restablecimiento exitoso!”.
Paso 12:
Haz clic en el botón HOME para volver a la página principal.