> 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/dockerlabs/facil/winfake.md).

# WinFake

## Introduccion

En este laboratorio de DockerLabs se compromete una maquina Linux que simula un entorno Windows de forma bastante curiosa. La cadena se basa en enumeracion web, obtencion de un usuario desde el codigo fuente, fuerza bruta SSH y una escalada final a `root` usando una password escondida mediante un acrostico.

***

## Reconocimiento

Se comienza con un escaneo de versiones contra la maquina objetivo:

```bash
nmap -sV -p- -T4 172.17.0.2
```

![Nmap](/files/PbYtpVIZHn869m9C3zMa)

El escaneo muestra dos puertos abiertos:

| Puerto | Servicio | Version                    |
| ------ | -------- | -------------------------- |
| 22/tcp | SSH      | OpenSSH 9.6p1 Ubuntu       |
| 80/tcp | HTTP     | Apache httpd 2.4.58 Ubuntu |

Como hay un servicio web expuesto, se empieza por el puerto `80`.

***

## Enumeracion web

Al acceder a la web aparece un portal de noticias llamado **TechWorld Noticias**.

![Web principal](/files/0y75m4falZFGIlF2K60f)

Se realiza fuerza bruta de directorios y archivos con Gobuster:

```bash
gobuster dir -u http://172.17.0.2:80 \
  -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-medium.txt \
  -x html,php,txt
```

![Gobuster](/files/0ym1tUxafcu6qYed7FEZ)

El resultado no muestra demasiada superficie adicional:

| Recurso          | Codigo | Comentario        |
| ---------------- | ------ | ----------------- |
| `/index.html`    | 200    | Pagina principal  |
| `/server-status` | 403    | Recurso protegido |

***

## Pista en el codigo fuente

Al revisar el codigo fuente de la pagina principal aparece una pista interesante dentro del CSS:

```css
top: pipe;
```

![Codigo fuente](/files/f4GO93HJURG2fvoDSwhG)

El valor `pipe` destaca porque no tiene sentido como valor CSS valido para `top`, asi que se toma como posible nombre de usuario.

***

## Fuerza bruta SSH

Con el usuario candidato `pipe`, se lanza Hydra contra SSH usando `rockyou.txt`:

```bash
hydra -l pipe -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh
```

![Hydra](/files/KPHTZMuPc2YMFpPelraX)

Hydra encuentra credenciales validas:

```
Usuario: pipe
Password: kisses
```

***

## Acceso inicial

Se accede por SSH con las credenciales encontradas:

```bash
ssh pipe@172.17.0.2
```

![SSH pipe](/files/Vlz8tJwQEg8jAgavBze7)

La maquina muestra una simulacion de consola Windows PowerShell, aunque por debajo sigue siendo un sistema Linux. En el directorio del usuario aparece el archivo `user.txt`.

Se lee la flag de usuario:

```powershell
type user.txt
```

![User flag](/files/Q3X60mK0arrWvyc7ofxP)

Contenido:

```
d970977b69a543ce746095e2b660d107
```

Al identificar el formato del valor, se detecta como posible hash MD5:

![Hash identifier](/files/1IZkQeEamTvkdn6GzbnZ)

***

## Acrostico en la web

Volviendo al codigo fuente de la web, aparece un bloque marcado como `acrostico inicial`:

![Acrostico HTML](/files/Bk3Az4XqVGPtOHj9K7eK)

Tomando la primera palabra de cada titular se obtiene la siguiente secuencia:

![Palabras del acrostico](/files/JKVWkNRNmu24WHPgwC3W)

La inicial de cada palabra forma:

![Password acrostico](/files/VVt38skQMPUcQpArNwkH)

```
WINSERVERROOTFAKENEWS
```

Como posible password de `root`, se prueban distintas variaciones de mayusculas y minusculas:

```
winserverrootfakenews
WINSERVERROOTFAKENEWS
WinServerRootFakeNews
```

La tercera variante resulta ser la correcta:

```
WinServerRootFakeNews
```

***

## Escalada a root

Desde la sesion como `pipe`, se cambia al usuario `root` con `su`:

```powershell
su root
```

![su root](/files/1K0zJDta8FAyuq1aDm7I)

Tras introducir la password `WinServerRootFakeNews`, se obtiene acceso como `root`.

Finalmente se lee la flag:

```bash
ls
cat root.txt
```

![Root flag](/files/dBx8FePujcSPlVk8ZXEk)

Contenido:

```
fa209fcfb40c4276bd2ceb9f08bf5f7b
```

***

## Conclusion

La maquina se compromete siguiendo una cadena muy basada en enumeracion y lectura cuidadosa del codigo fuente. Primero, una pista CSS revela el usuario `pipe`; despues, una fuerza bruta controlada con Hydra permite conseguir la password `kisses` para SSH. La escalada final se resuelve detectando un acrostico en los titulares de la web y usando la variante correcta `WinServerRootFakeNews` como password de `root`.

### Puntos clave

| Fase            | Tecnica        | Resultado                   |
| --------------- | -------------- | --------------------------- |
| Reconocimiento  | Nmap           | SSH y HTTP expuestos        |
| Enumeracion web | Gobuster       | Solo `index.html` relevante |
| Codigo fuente   | Pista CSS      | Usuario `pipe`              |
| Credenciales    | Hydra          | Password `kisses`           |
| Acceso inicial  | SSH            | Shell como `pipe`           |
| Pista final     | Acrostico HTML | `WinServerRootFakeNews`     |
| Escalada        | `su root`      | Acceso como `root`          |

### Recomendaciones

* No incluir usuarios, passwords o pistas sensibles en el codigo fuente.
* Usar passwords robustas y no basadas en palabras de diccionario.
* Implementar controles contra fuerza bruta en SSH.
* Evitar reutilizar informacion visible en la aplicacion como secreto del sistema.
* Revisar que las pistas de desarrollo o comentarios no queden publicados en produccion.


---

# 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/dockerlabs/facil/winfake.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.
