JAVA VULNERABLE LAB
Alejandro García Arias
La tarea consiste en resolver los siguientes ejercicios en la máquina
JavaVulnerableLab y entregar un documento lo más detallado posible con las
capturas de pantalla de los momentos claves y explicando como se ha resuelto
cada uno de los ejercicios.
Web > Vulnerability > A4 Insecure Direct Object References
Antes que nada, lo primero que hemos hecho es acceder como la cuenta de
administrador haciendo un sql injection del tipo ‘or 1=1 – -
• 04.A4.MV1.1. Ver los detalles de otro usuario
Y ahora podemos navegar entre las diferentes opciones que nos dan, vamos
a navegar hacia ver los detalles del usuario
2
Vemos que en la url pone id=1 simplemente con cambiar ese número
podemos acceder a los demás ids y eso significa a los demas usuarios
registrados
3
Si lo cambiamos a 2 estaríamos en la cuenta de victim
• 04.A4.MV1.2 – Cambiar email a otro usuario
Simplemente navegamos hacia cambiar el email y le damos a inspeccionar
Posteriormente buscamos el campo id y vemos que es de tipo hidden, le
cambiamos por un tipo texto para que aparezca en pantalla.
Una vez hemos cambiado el tipo de campo ya podemos cambiar el email a
4
otros usuarios, lo realizamos y posteriormente lo comprobamos en el perfil de
dicho usuario al que hemos cambiado el correo
• 04.A4.MV1.3 – Descargar el fichero passwd
Interceptamos con burpsuite al descargar un archivo y cambiamos el nombre
del archivo por ../../../../etc/passwd
Web > Vulnerability > A7 - Missing Function Level Access Control
5
• A7.MV1.1 – Bypass admin login
Intentamos una consulta sencilla: ' or '1' = '1, y vemos que la consulta se
realiza
correctamente, aunque no encuentra ningún usuario administrador sin
nombre. Como
sabemos que el nombre de usuario del administrador es "admin", ingresamos
"admin" seguido
de la consulta SQL anterior.
• A7.MV1.2 - Crear una página HTML en la web llamada [Link]
En esta página nos da la opción de añadir una página asi que simplemente creamos
un código html y lo insertamos
• A7.MV1.3 - Crear una jsp en la web con código malicioso llamada [Link], y
que escriba por ejemplo Hacked by <alumno>
Es el mismo caso que antes simplemente ahora pues es otro código en este
caso yo he hecho que al darle a un botón aparezca en rojo Hacked by
Alejandro
6
• A7.MV1.4 - Obtener un mapa de la web (forced browsing) y verificar cuántas
de estas opciones podemos ejecutar sin ser administrado
Para ello vamos a hacerlo con kali linux con gobuster
Esto ha sido el resultado final de gobuster para ver si se puede inicar sin ser
administrador no queda otra que probarlo a mano
A6 Sensitive Data Exposure
7
Web > Vulnerability > A6 Sensitive Data Exposure
• A6.MV1.1. ClearText Transmision of sensitive Information
En este caso si hay información sensible, basta con iniciar sesión y mandarlo
al burpsuite y nos dan cosas como las cookies el token y incluso las
contraseñas y el email
O incluso en el propio perfil podemos ver información que no se debería
mostrar como la trajeta de credito o incluso el cvv y recordemos que
podemos cambiar de usuario sin problema asi que esto es un problema grave
de seguridad
• A6.MV1.2. Obtener los datos de las tarjetas de crédito
Tan solo tenemos que cambiar en my profile o en burpsuite y sale las tarjetas
de creditos con todos los datos incluso el cvv simplemente tenemos que
8
cambiar el id=
• A6.MV1.3 - Obtener la password de los usuarios
Para obtener las contraseñas del usuario vamos a intentar saltarnos las preguntas
con una inyeccion de sql poniendo el nombre del usuario que queramos y despues
ponemos la inyeccion
A5 Security Misconfiguration
Web > Vulnerability > A5 Security Misconfigurationç
• A5.MV1.1.- Obtener la URL de conexión a la base de datos
La url de conexion de la base de datos
Simplemente sale aquí
• A5.MV1.2.- Acceder con la cuenta de administrador
• A5.MV1.3.- Eliminar una base de datos
Simplemente al crear una base de datos se elimina la anterior
9
• A5.MV1.4.- Cambiar la cuenta de administrador
Estaba trabajando en Java Vulnerable Lab y descubrí que el usuario
administrador tiene la capacidad de crear nuevas páginas .jsp a través de
una funcionalidad llamada "Add Page". Esto me hizo pensar que, al poder
subir código JSP personalizado, sería posible ejecutar comandos desde el
servidor, ya que JSP se interpreta del lado del servidor.
Para hacerlo, usé la ayuda de ChatGPT, que me proporcionó un archivo .jsp
capaz de:
Conectarse internamente a la base de datos del sistema.
Ejecutar consultas SQL que yo escribiera desde un formulario web.
Mostrar resultados directamente en la página.
Y permitir acciones como visualizar tablas o modificar datos.
10
Ahora simplemente actualizamos y le ponemos privilegios de admin a la
cuenta que queramos
• A5.MV1.5.- Obtener la versión del contenedor web y el nombre de la tabla
donde se almacenan los temas del foro
Para obtener la versión hemos creado una página .jsp de nuevo para ver que
version tiene con ayuda de chatgpt
En la página que he creado antes podemos ir tabla por tabla buscando donde
se almacenan los temas
11
En este caso es la tabla posts donde se encuentran los temas del foro
• A5.MV1.6.- Crear una página de error por defecto, que muestre un mensaje
genérico sin dar detalles técnicos del error
He creado un html y de nuevo con el panel de administración del admin pues lo he
añadido como una página nueva
12
13