🟠Veneno
En esta ocasión vamos a hacer el writeup de la máquina Veneno de Dockerlabs, una máquina Linux de dificultad Medium.

Despliegue de la máquina
sudo bash auto_deploy.sh veneno.tar
Estamos desplegando la máquina vulnerable, espere un momento.
Máquina desplegada, su dirección IP es --> 172.17.0.2Tenemos la IP: 172.17.0.2
Primer acceso
Accedemos través del navegador y llegamos a una default page de Apache:

No obtenemos nada relevante, por lo que vamos a escanear los puertos abiertos en esta máquina.
Escaneo de puertos
Solo encontramos 2 puertos abiertos, el 22 y el 80. En principio nada relevante.
Fuzzing
Haciendo fuzzing con feroxbuster nos encontramos un directorio interesante:

Encontramos un directorio /uploads interesante pero sin ningún archivo en su interior.
Vamos a acceder a /problems.php a ver que encontramos. En principio parece lo mismo que index.html, no encontramos nada relevante. Vamos a probar si tiene algún parámetro vulnerable en la URL:
Encontramos que tiene un parámetro vulnerable "backdoor" con el que podríamos leer archivos del sistema, como /etc/passwd:

Encontramos 2 usuarios con shell interesantes:
Ubuntu
Carlos
Local File Inclusion
Vamos a comprobar que archivos podemos leer del sistema, igual alguno contiene credenciales o información relevante:
También podríamos filtrar por archivos de log con grep:
Encontramos un archivo de logs interesante en /var/log/apache2/error.log
Log poisoning
Ahora que tenemos el access.log a disposición , vamos a tratar de envenenarlo. El envenamiento de este log ocurre cuando introducimos un error y este se registra en /var/log/apache2/error.log, y aprovechamos este comportamiento para inyectar codigo malicioso en el registro.
Abrimos desde el navegador el error.log:
Ahora vamos a solicitar un archivo que no existe para que veamos el comportamiento:
Enviamos la solicitud (con curl) y refrescamos la web en error.log, lo que tuvo que registrar la solicitud que hicimos. Vemos que al final del todo del archivo error.log se registra correctamente el prueba.php que no existe. Nos vamos aprovechar de esto para envenenar el registro con código malicioso php.
Podemos usar por ejemplo el siguiente payload:
Debemos urlencodear <?php system('id') ?>.php para que pueda ser interpretado por el navegador, Lo podemos hacer con Burp Decoder:
Al enviar el curl vemos que se ejecuta el comando id en el archivo de error.log, con lo que podemos probar a cargar un script php que nos envíe una reverse shell.
Subida de webshell
Tenemos ejecucion de comandos a traves del envenamiento de error.log asi que ahora vamos a cargar un script php que nos envie una reverse shell. Vamos a tratar de subir un webshell, en mi caso voy a usar PownyShell
Vamos a renombrar nuestro shell.php a index.html y vamos a levantar un servidor local con python por el puerto 80.
Ahora vamos a crear un payload para descargar en el servidor web dentro de /uploads el index.html que tenemos levantado con python, una vez descargado le cambiamos el nombre a shell.php, el payload final quedaría así:
Ahora lo urlencodeamos:
Y lo enviamos al servidor con el siguiente comando:
Ahora al recargar error.log aparece el log, y si vamos al directorio /uploads vemos que se ha cargado correctamente la webshell:

Al acceder entremos a la webshell y podemos ejecutar comandos:

Escalada de privilegios
No podemos acceder a los directorios home de los usuarios carlos y ubuntu, por lo que haremos un poco de research. En el directorio /var/www/html encontramos un archivo interesante:

Vamos a aplicar técnicas de credential hunting en Linux para buscar archivos de contraseñas:
Desde la webshell no nos deja cambiar al usuario carlos para probar esta contraseña, por lo que vamos a loguearnos por SSH como el usuario carlos:
Si hacemos un ls para ver los archivos nos encontramos con multitud de carpetas::

Podemos usar el siguiente comando para buscar archivos comunes:
Vamos a enviarnos la imagen a nuestro kali para examinarla:
Vamos a analizar la imagen con exiftool:
En Image Quality encontramos una posible contraseña: pingui1730
La probamos con el usuario root y funciona!
Última actualización
¿Te fue útil?
