¡Bienvenido al manual de Pentesting para principiantes en TomGhost TryHackMe! En esta guía, aprenderás los pasos básicos para realizar una prueba de penetración en la máquina TomGhost de la plataforma TryHackMe. A continuación, te explicaré los comandos y herramientas utilizadas en cada paso.
Paso 1: Comprobación de la conectividad
Para comenzar, es importante comprobar la conectividad con la máquina objetivo. Ejecuta el siguiente comando en tu terminal:
ping -c 1 <ipmaquina>
Este comando envía un paquete de solicitud de eco (ping) a la dirección IP de la máquina objetivo y espera una respuesta. Si recibes una respuesta exitosa, significa que tienes conectividad con la máquina.
Paso 2: Escaneo de puertos básico
Realizaremos un escaneo de puertos básico utilizando la herramienta nmap
. Ejecuta el siguiente comando:
nmap -p- <ipmaquina> -oN nmap_tomghost_nmap_basico
El comando nmap
se utiliza para explorar los puertos abiertos en una máquina. En este caso, estamos escaneando todos los puertos disponibles en la máquina objetivo y guardando los resultados en el archivo «nmap_tomghost_nmap_basico».
Durante el escaneo, se identificaron los siguientes puertos abiertos y servicios correspondientes:
- Puerto 22: Servicio SSH.
- Puerto 53: Servicio DNS.
- Puerto 8009: Desconocido.
- Puerto 8080: Servicio HTTP.
Paso 3: Escaneo de puertos detallado
Ahora realizaremos un escaneo de puertos más detallado utilizando nmap
. Ejecuta el siguiente comando:
nmap -p 22,53,8009,8080 -sCVS --min-rate 5000 -v -n <ipmaquina> -oN nmap_tomghost_completo
Este comando realiza un escaneo exhaustivo en los puertos específicos que hemos seleccionado y guarda los resultados en el archivo «nmap_tomghost_completo».
Durante el escaneo, se encontraron los siguientes servicios:
- Puerto 22: OpenSSH 7.2p (Servicio SSH seguro).
- Puerto 8080: Apache Tomcat 9.0.30 (Servidor de aplicaciones web).
Paso 4: Búsqueda de vulnerabilidades en Apache Tomcat
En este paso, buscaremos vulnerabilidades conocidas en la versión de Apache Tomcat que hemos identificado (9.0.30). Para ello, clonaremos un repositorio de GitHub que contiene un exploit específico. Ejecuta el siguiente comando:
git clone https://github.com/dacade/CVE-2020-1938.git
Este comando clona el repositorio «CVE-2020-1938» desde GitHub. El exploit contenido en este repositorio nos ayudará a buscar vulnerabilidades en Apache Tomcat.
Paso 5: Preparación del exploit para su ejecución
Antes de ejecutar el exploit, debemos asegurarnos de que el archivo sea ejecutable. Utiliza el siguiente comando:
chmod u+x tomcat.py
Este comando otorga permisos de ejecución al archivo «tomcat.py», lo que nos permitirá ejecutarlo en el siguiente paso.
Paso 6: Ejecución del exploit en Apache Tomcat
Ahora es el momento de ejecutar el exploit en Apache Tomcat utilizando el archivo «tomcat.py» que hemos preparado. Ejecuta el siguiente comando:
python3 tomcat.py <ipmaquina> -f /WEB-INF/web.xml -p 8009
En este comando, reemplaza <ipmaquina>
con la dirección IP de la máquina objetivo. El exploit intentará aprovechar la vulnerabilidad en Apache Tomcat utilizando la ruta del archivo «/WEB-INF/web.xml» y el puerto «8009».
Durante la ejecución del exploit, se mostrarán posibles credenciales de acceso a la máquina.
Paso 7: Acceso por SSH utilizando las credenciales encontradas
Ahora que tenemos posibles credenciales de acceso, podemos intentar acceder a la máquina objetivo a través de SSH. Utiliza el siguiente comando:
ssh usuario@<ipmaquina>
Reemplaza <ipmaquina>
con la dirección IP de la máquina objetivo y proporciona la contraseña correspondiente cuando se solicite.
Una vez que hayas accedido a la máquina, podrás explorar el directorio y encontrar dos archivos: uno con extensión «.pgp» y otro con extensión «.asc». Descargaremos estos archivos para trabajar con ellos y descifrarlos.
Paso 8: Creación de un servidor HTTP en la máquina objetivo
Para descargar los archivos desde la máquina objetivo, necesitamos configurar un servidor HTTP en la máquina objetivo. Ejecuta el siguiente comando:
python3 -m http.server
Este comando utiliza el módulo http.server
de Python para crear un servidor HTTP en la máquina objetivo. Esto nos permitirá descargar archivos desde la máquina objetivo a nuestro equipo atacante.
Paso 9: Descarga de archivos desde la máquina atacante
Ahora podemos descargar los archivos necesarios desde la máquina objetivo. Utiliza el siguiente comando:
wget <ipmaquina>:8000/archivos
Reemplaza <ipmaquina>
con la dirección IP de la máquina objetivo. Este comando utiliza la herramienta wget
para descargar el directorio «archivos» desde el servidor HTTP en la máquina objetivo a tu equipo atacante.
Paso 10: Desencriptación de archivos
Los archivos que hemos descargado están encriptados. Para desencriptarlos, seguiremos los siguientes pasos:
- Convierte el archivo «.asc» en un formato compatible con «John the Ripper» utilizando el siguiente comando:
gpg2john tryhackme.asc > hash
Este comando convierte el archivo «tryhackme.asc» en un formato que puede ser utilizado por «John the Ripper» y guarda los resultados en el archivo «hash».
- Utiliza «John the Ripper» junto con un diccionario de contraseñas para intentar descifrar el archivo encriptado. Ejecuta el siguiente comando:
john --wordlist=/ruta/diccionario hash
Asegúrate de reemplazar «/ruta/diccionario» con la ruta correcta de tu diccionario de contraseñas.
Paso 11: Importación y desencriptación de archivos GPG
Una vez que hayas descifrado el archivo, importa la clave pública GPG desde el archivo «tryhackme.asc» a la lista de claves GPG utilizando el siguiente comando:
gpg --import tryhackme.asc
Luego, utiliza el siguiente comando para desencriptar el archivo «credential.pgp» utilizando la clave privada correspondiente:
gpg --decrypt credential.pgp
Paso 12: Acceso nuevamente por SSH con las nuevas credenciales
Ahora que tenemos las nuevas credenciales, podemos intentar acceder a la máquina objetivo nuevamente utilizando SSH. Ejecuta el siguiente comando:
ssh merlin@<ipmaquina>
Reemplaza <ipmaquina>
con la dirección IP de la máquina objetivo y proporciona la contraseña correspondiente cuando se solicite.
Paso 13: Captura de la primera bandera
Una vez que hayas accedido a la máquina como usuario «merlin», puedes capturar la primera bandera ejecutando el siguiente comando:
cat user.txt
Este comando muestra el contenido del archivo «bandera1.txt», que contiene la primera bandera obtenida durante el acceso como usuario «merlin».
Paso 14: Escalada de privilegios
Para realizar una escalada de privilegios, ejecuta el siguiente comando para verificar los privilegios disponibles para el usuario actual:
sudo -l
Este comando muestra los privilegios disponibles para el usuario actual y verifica si se tiene permiso para ejecutar comandos con privilegios de root. En este caso, encontramos la siguiente línea: «(root : root) NOPASSWD: /usr/bin/zip».
Paso 15: Escalada de privilegios con «zip»
Ahora que hemos identificado una posible forma de escalada de privilegios utilizando «zip», podemos aprovecharla. Seguiremos los siguientes pasos:
- Visita la página https://gtfobins.github.io/gtfobins/zip/#sudo para obtener información sobre cómo utilizar «zip» para obtener privilegios de root.
- Utiliza el siguiente comando para ejecutar la escalada de privilegios:
TF=$(mktemp -u)
sudo zip $TF /etc/hosts -T -TT 'sh #'
Este comando utiliza la vulnerabilidad en la configuración de «sudoers» para ejecutar el comando «zip» con privilegios de root. Crea un archivo temporal único y utiliza «sudo zip» para comprimir el archivo «/etc/hosts» y ejecutar un shell interactivo («sh») con privilegios de root.
Paso 17: Captura de la última bandera
Una vez que hayas obtenido privilegios de root, puedes capturar la última bandera ejecutando el siguiente comando:
cat root.txt
Este comando muestra el contenido del archivo «root.txt», que contiene la última bandera obtenida como usuario root.
Resumen TomGhost TryHackMe
En resumen, hemos realizado un proceso de pentesting en la máquina «tomghost» de TryHackMe. Los pasos seguidos fueron los siguientes:
- Comprobación de la conectividad con la máquina objetivo.
- Escaneo de puertos básico utilizando Nmap.
- Escaneo de puertos detallado para obtener información adicional sobre los servicios.
- Búsqueda de vulnerabilidades en Apache Tomcat utilizando un exploit específico.
- Preparación y ejecución del exploit en Apache Tomcat.
- Acceso por SSH utilizando las credenciales obtenidas.
- Descarga de archivos desde la máquina objetivo.
- Desencriptación de archivos utilizando GPG.
- Acceso nuevamente por SSH con las nuevas credenciales.
- Captura de la primera bandera.
- Escalada de privilegios utilizando la vulnerabilidad en «sudoers» y el comando «zip».
- Captura de la última bandera como usuario root.
Esta experiencia nos permitió adquirir conocimientos sobre el proceso de pentesting, desde la exploración y escaneo de puertos hasta la escalada de privilegios en un entorno controlado.
Recomendación de DCSeguridad
¡Te invitamos a ponerte en contacto con DCSeguridad y unirte a nuestro canal de Telegram!
DCSeguridad es una empresa líder en servicios de seguridad informática y pentesting. Nuestro equipo de expertos en seguridad puede ayudarte a proteger tu infraestructura y aplicaciones contra amenazas cibernéticas.
Te animamos a ponerte en contacto con nosotros para obtener más información sobre cómo podemos asegurar tu empresa y brindarte soluciones personalizadas. Únete a nuestro canal de Telegram para recibir las últimas actualizaciones y consejos de seguridad.
No dejes que tu empresa sea vulnerable a ataques cibernéticos. Confía en DCSeguridad para fortalecer tu seguridad y proteger tus activos digitales.
¡Contáctanos hoy mismo y mantén tu negocio seguro en el mundo digital!