Cyber
TryHackMe
TryHackMe
  • crack the hash
  • Juice Shop
  • MrRobot CTF
  • Ninja Skills
  • Basic Pen Testing
  • bank_ctf
  • blaster
  • OWASP TOP 10
  • eternalblue
  • ice
  • easypeasy
  • pentesting completo
  • kenobi
  • Overpass
  • OWASP ZAP
  • Post Explotacion
  • Relevant
  • RootCTF
  • Stealth
  • Uso de SILK
  • Wreath
  • Clocky
  • Wifi Hacking 101
  • SQLMap
  • Kitty
  • Opacity
  • Bricks Heist
  • Carnage
  • Snort
  • Daily Bugle
  • Creative
  • CyberLens
  • Insecure Deserialisation
Powered by GitBook
On this page

Wreath

PreviousUso de SILKNextClocky

Last updated 1 year ago

Contenido

1.- Primeros pasos

Lo primero que haremos será descargarnos el archivo de configuración para la propia red de wreath:

Y nos conectamos a través de el.

2.- Enumeracion

Vamos a lanzar un nmap a todos los puertos:

Tras el escaneo obtenemos los siguientes resultados:

Ahora que sabemos los puertos abiertos vamos a ejecutar otro nmap pero para sacar la versión de los servicios alojados en ellos:

Si nos fijamos tanto en el puerto 80 como en el 443 , parece que esta corriendo un CentOS.

Lo siguiente que haremos será acceder a la ip que nos muestra para ver que tiene montado. Pero al acceder a la ip :

Nos redirige a este dominio que parece que no tiene el dns activado.Asi que para solucionarlo vamos a añadirlo en el archivo /etc/hosts:

Y ya podemos acceder.

A continuación vamos a mirar al ultimo puerto abierto , el 10000 y ver que versión esta corriendo:

Vamos a buscar esto en google para ver que vulnerabilidad tiene.

Una vez tengamos todo esto vamos a saltar a la fase de explotación.

3.- Explotacion

Para esta fase de explotación , como ya tenemos el cve de la vulnerabilidad vamos a buscar un exploit que nos sirva para dicho fin:

Una vez encontrado , vamos a comenzar descargándonos el repositorio:

Accedemos a la carpeta y descargamos los requerimientos:

Una vez hecho esto lanzamos el script y vemos que usuario somos:

Luego nos generamos un reverse Shell en nuestra maquina:

Ahora nos piden el hash del usuario root , asi que simplmente accedemos al /etc/shadow:

Aun asi este hash no es posible de descifrar , asi que vámonos al archivo que guarda las claves ssh, este archivo se ubica en /root/.ssh/id_rsa que esta archivo seria la clave privada del ssh:

Una vez tenemos la key , simplemente copiamos y pegamos en un archivo .rsa y ejecutamos el siguiente comando:

De esta forma tenemos una forma de conseguir conexión con la maquina de nuevo en caso de interrupción.

4.- Pivoting

Una vez tenemos toda la parte de explotación vamos a continuar con el pivoting dentro de nuestra red.Comenzaremos viendo si en el archivo /etc/hosts hay alguna conexión reciente:

Que parece que no es el caso . Lo siguiente será ir a /etc/resolv.conf para ver si tiene algún servidor DNS configurado.

Y aquí parece que si hemos tenido suerte.

Ahora veremos varios comandos para hacer posr forwarding y reverse fostwarding

Aquí comandos para lo mismo con socat:

Ahora con chisel

Y con sshuttle:

Resumen parte pivoting:

5.- Git server

Vamos a comenzar descargándonos el binary de nmap y pasandoloo a la maquina objetivo:

Una vez tenemos el binariio seteamos un servidor de Python:

Y lo descargamos desde l a maquina objetivo:

Nuestro siguiente paso será crear un tunnel por medio de la herramienta sshutel para poder acceder al resto de equipos de la red:

Al hacer esto ya podemos acceder al resto de equipos de la red pero antes , vamos a ejecutar un nmap desde la maquina que primero se comprometio ya que será mas rápido para ver que puertos tiene abiertos las otras dos maquinas de la red:

Y parece que solo la maquina 10.200.105.150 es la única con puertos abiertos, vamos a acceder desde nuestra kali a través del navegador ya que tenemos el túnel hecho:

Al acceder nos da un error de django y nos enumera tres urls , vamos a acceder a /registration/login:

Y nos encontramos GitStack. Probamos las contraseñas por defecto que vienen ahí pero nada. Asi que vamos a searchsploit a buscar algún exploit para gitstack.

Vamos a utilizar el 3:

Una vez descargado , lo convertimos a formato Linux:

Luego lo modificamos con la ip objetivo y lo corremos:

Una vez hecho esto debemos añadir el shebang para que lo ejecute con el interprete adecuado , ya que es python2 haremos esto:

Y lo corremos:

Parece que al ejecutarlo , ejecuta el exploit el comando whoami , dando la respuesta:

Nt authority\system

Una vez sabemos que el exploit funciona vamos a modificar los archivos que se crearan en el objetivo con nuestro nombre para no joder a los demás usuarios de tryhackme.

Ahora vamos a hacerlo de forma remota con curl:

(hemos añadido gitserver.thm al archivo hosts)

Una vez tenemos esto podemos hacer diferentes comandos para enumerar cosas interesantes:

Para saber el OS , tenemos dos opciones , hacer uname para Linux o systeminfo en Windows y el que nos responda será:

Y parece que tenemos un Windows Server 2019

Ahora que ya sabemos que tenemos ejecución de comandos en el servidor , debemos generarnos una reverse Shell en la maquina atacante , pero para ello primero debemos saber si tenemos comunicación con el exterior de la red. Tras hacernos ping a nuestra maquina confirmamos que no.

Para poder generarla primero de todo vamos a crear una regla en el firewall del servidor que comprometimos primero , es decir el que hara de puente:

Lo siguiente será crear un rely en el servidor comprometido , para ello primero nos descargamos un binario de socat y lo uploadeamos al servidor:

Ahora creamos la redirección con socat:

Ahora con la redirección de socat y el puente de sshuttle activos , vamos a setear el listener en nuestra maquina:

Y una vez todo esto montado , lanzamos el script para generar nuestra Shell:

Y después de esto en nuestro listener obtendremos la Shell:

Ahora que ya tenemos la Shell vamos a crearnos un usuario:

Este usuario lo añadiremos a estos dos grupos:

Y comprobamos que pertenecemos a esos grupos:

Este usuario nos servirá como backdoor para entrar en un futuro.

Verificamos con el reminna que tenemos acceso a la maquina con el usuario recién creado.

Tambien podemos conectarnos a la maquina mediante winrm:

Y por ultimo vamos a probar a conectarnos con freerdp:

Pero xfreerdp no se queda ahí ya que tiene argumentos muy interesantes como los siguientes:

  • Con el +clipboard podemos copiar entre nuestra maquina y la objetivo

  • /dynamic-resolution se ajusta a nuestra resolución

  • /drive: podemos montar en la maquina objetivo una carpeta compartida con nuestra maquina atacante , en nuestro caso utilizaremos esa carpeta de la kali que tiene herramientas interesantes para explotar Windows.

El siguiente paso será abrir un cmd con admin y ejecutar lo siguiente:

Una vez ejecutado elevaremos nuestros permisos con los siguientes comandos:

Y con este comando obtendremos los hashes de las contraseñas de todos los usuarios:

Vamos a coger el hash por ejemplo de thomas y vamos a romperlo:

En un mundo real , esto seria suficiente , pero como puede ser que reinicien la room , vamos a utilizar evil winrm para generar una conexión estable:

(Aquí estamos utilizando el hash en vez de la contraseña de administrador)

6.- Command and Control (Empire)

Empire es un framework utilizado para post explotación en redes Windows , tiene un modo cliente y uno servidor. Tambien tiene un modo GUI llamado Starkiller.

Vamos a comenzar con la instalación de empire:

Una vez instalado vamos a lanzar un servidor:

Normalmente servidor y cliente se corren en maquinas separadas pero para esta practica la correremos las dos en la misma, asi que arrancado el servidor vamos a arrancar el cliente:

Una vez arrancado el servidor podemos arrancar la verison grafica escribinedo starkiller en un terminal:

Nos logueamos con las creds por defecto:

Aquí nos explican un poco por encima que trae el framework:

LISTENERS

Se usan para crear conexiones

Vamos a setear un listener , pero primero de forma cli:

Empezaremos con http que es el mas típico:

Una vez creado y dentro del listener vamos a configurarlo con el nombre , la ip de nuestra maquina atacante y un puerto:

Lo podemos ejecutar con execute , luego salir de el con back y luego verlo con listeners

Para eliminar un listener simplemente :

Una vez visto como se hace en CLI vamos a ver como se hace en GUI:

Para el gui por defecto ya estamos en los listeners asi que le damos a crear:

Configuramos estas 3 cosas y le damos a submit:

STAGERS

Se usan como los payloads , se usan para mandar las conexiones a los listeners creados anteriormente.

Primero veremos como hacerlos mediante CLI:

Usamos usestager para crearlos , luego elegiremos multi_bash ya que los multi suelen funcionar muy bien, luego para configurarlos solo hay que setear el nombre del listener que creamos antes:

Luego lo ejecutamos con execute. Se generara el payload , que guardaremos para mas adelante en un archivo:

Desde GUI es muy parecido , nos vamos al apartado stagers , crear y:

Le ponemos un nombre y elegimos el listener.

AGENTS

Lo siguiente seria crear un agente poniendo todo esto en común para ello nos hace falta ejecutar el archivo que nos guardamos en la maquina objetivo , o simplemente copiar lo que es el payload y ejecutarlo:

Explicacion del archivo generado anteriormente:

Como podemos ver se ha creado un agente en la versión CLI y GUI

Para entrar en el agente:

Si hacemos un help podemos ver los comandos disponibles:

Y para eliminarlo igual , hacemos back , luego kill “nombre del agente”

HOP_LISTENERS

Vamos a empezar creando el listener:

Luego le configuramos las siguientes opciones:

Al ejecutarlo con execute en nuestra maquina atacante se creara en el directorio /tmp:

GIT-SERVER

Vamos a empezar creando el stager linkeandolo con el http_hop:

Nos guardamos este payload en un archivo , y vamos a pasar el directorio /tmp/http_hop de la maquina atacante a la física:

Luego montamos un servidor de Python para servir el archivo:

En el servidor objetivo lo descargamos:

Y lo descomprimimos.

Y por ultimo lo servimos:

7.- Personal PC

Lo primero interesante a destacar en esta sección es el uso del upload y download que trae evil_winrm:

Upload ruta_origen ruta_destino

Donwload ruta_origen ruta_destino

Esto se suele usar para subir herramientas como nmap o netcat a la maquina objetivo y a través de ahí escanear la red para saltar al siguiente objetivo.

Luego también nos muestran como evilrm trae un argumento –s que se utiliza para montar localmente una ruta local en la maquina objetivo:

Esta vez lo haremos especificando la ruta donde por defecto kali Linux almacena un script de powershell para escanear la red

Una vez dentro lo ejecutamos y vemos la ayuda para ver como se utiliza , tiene una sintaxis similar a nmap.Asi que vamos a escanear por ejemplo los top 50 puertos de la ultima maquina de la red la .100:

Lo siguiente que haremos será añadir una regla en el firewall para dejar hacer post forwading a la maquina objetivo con chisel:

Una vez creada la regla nos descargamos el binario desde github del chisel y lo upladeamos a la maquina .150:

Una vez subido el archivo vamos a arrancar un servidor mediante chisel indicando el puerto que abrimos en el firewall:

Ya solo nos faltaría conectarnos desde la maquina atacante , ejecutando el chisel como cliente:

El ultimo paso seria configurar el foxyproxy para utilizar dicho puerto:

Y ya por fin podemos acceder a la maquina .100:

Una vez accedamos con el wappalizer sacamos la versión del lenguaje utilizado en el backend que es php 7.4.11:

Sabiendo esto vamos a descargar el código fuente del repositorio de git de la maquina .150 que es desde donde el servidor git coge los repos:

Una vez descargado , lo unboxeamos con la herramienta gittools y encontramos un archivo index.php:

En su código podemos ver que tiene un uploadeador de imágenes pero , simplemente habría que añadir la extenxion php en las permitidas que podemos ver mas arriba. Ademas vemos que existe un directorio llamado /resources vamos a visitarlo:

Un login , vamos a probar con el usuario y contraseña que sacamos en tasks anteriores , thomas/i<3ruby

Y parece que hemos entrado.Vamos a subir una imagen y ver si podemos acceder a ella:

Ahora vamos a probar a cambiar la imagen de nombre a meme.jpg.php y vamos a acceder a ella:

Por lo que esta será la forma con la que explotaremos el servidor. Para ello nos hace falta descargar una imagen de internet o esta misma e insertarle mediante exiftool código php para que cuando la ejecutemos se ejecute el payload y nos devuelva una Shell.

Como sabemos que hay un antivirus detrás vamos a probar un payload inofensivo para ver si lo corre:

Asi que vamos a insertarlo en nuestra imagen:

8.- AV Evasion

Lo primero que debemos hacer es crear nuestro payload para obtener una Shell en php para Windows:

Una vez la tengamos necesitsamos ofuscarla , para que el antivirus no la detecte , en mi caso utilice una web para ello:

Y te da algo asi.Ahora ya solo faltaría añadirla con exiftools en la imagen que queramos y la ejecutamos:

Si nos sale algo asi es que ha funcionado.Ahora vamos a ejecutar un comando de la siguiente manera para ver info del pc:

Una vez que tenemos nuestra Shell , nos tendríamos que descargar una versión de netcat y subirla al servidor pero el netcat de Windows que viene en kali preintalada ya la tiene identificada el AV por lo que nos descargaremos unas de github:

Una vez lo tenemos utilizaremos curl para subir el archivo al servidor , para ello primero en nuestra maquina seteamos un servidor Python http como hacemos siempre donde este el archivo de netcat y luego escribimos:

Una vez que lo tengamos subidos hacemos lo siguiente:

Es decir setear un listener en nuestra maquina y ejecutar el powershell de la siguiente manera.

Tras esto ya tenemos nuestra full reverse Shell.Nuestro siguiente paso seria la escalada de privilegios ya que tenemos una cuenta con pocos privilegios.Para esto tenemos tres pasos a seguir:

Empezaremos con la enumeración manual para ello ejecutaremos whoami /priv:

Vemos como tenemos permiso en SeImpersonatePrivilege que es un permiso muy utilizado para explotación.

Ahora que ya sabemos los permisos que tenemos vamos a ver los servicios que están corriendo en la maquina pero que no son propios de Windows , lo haremos con el siguiente comando:

Con el findstr lo que hacemos es buscar servicios que no estén en el disco C de Windows.

Al ejecutarlo vemos el siguiente SystemExplorerHelpService cuya ruta no aparece entre comillas , esto quiere decir que si una de sus carpetas contiene un espacio en blanco y además es writable , y tiene permisos de nt authority\system podremos utilizarlo para escalar privilegios.

Para esto corremos el comando :

sc qc SystemExplorerHelpService

Vemos que lo esta corriendo como sistema local. Vamos a comprobar si el directorio en writable:

Una vez que sabemos que podemos utilizar dicho directorio para escalar nuestro privilegios debemos crear algo para que eso sea asi.Para ello vamos a crear un wrapper(envoltura) para que el AV no detecte nuestra reverse Shell. Para ello primero instalamos la herramienta mono en nuestra kali:

Luego abriremos el archivo wrapper.cs con el editor de texto que queramos y escribimos lo siguiente:

Esto nos ayudara a importar diferentes características.Luego esto:

Creamos un namespace para nuestro wrapper y una clase program donde dentro ira nuestro código.

Por ultimo le añadimos un nuevo proceso con el comando:

Al final debe quedar un archivo similar a este:

Una vez tenemos el archivo lo compilamos con la herramienta que instalamos antes:

Ya solo nos faltaría montar el servidor http en nuestra maquina y descargarla en la objetivo con curl como ya hicimos anteriormente , y luego setear un listener en nuestra maquina y ejecutar el archivo de la siguiente manera:

Ahora que ya tenemos nuestro wrapper y sabemos que funciona de forma manual , vamos a explotar la vulnerabilidad del directorio con espacios en blanco. Para ello debemos meterlo en la siguiente ruta:

Y llamarlo system.exe asi cuando se resetee el servicio Windows tiene una falla que hara que se ejecute el archivo en esta carpeta.Para forzar que se ejecute vamos a reiniciar el servicio con:

Y ya tendríamos root en esta ultima maquina.

9.- Exfiltration

Ya solo nos faltaría dejar constancia de que estuvimos aquí, para ello vamos a encontrar el hash de administrador y pasárselo a thomas para que se quede roto. Asi que para ello necesitamos dos archivos:

Una vez tenemos estos dos archivos nos los pasamos a nuestra maquina y una vez allí utilizaremos :

Para importarlas y ver el contenido: