Shocker

Shocker, aunque bastante simple en general, demuestra la gravedad del famoso exploit Shellshock, que afectΓ³ a millones de servidores pΓΊblicos.


Reconnaissance

Realizaremos un reconocimiento con nmap para ver los puertos que estΓ‘n expuestos en la mΓ‘quina Shocker. Este resultado lo almacenaremos en un archivo llamado allPorts.

A travΓ©s de la herramienta de extractPorts, la utilizaremos para extraer los puertos del archivo que nos generΓ³ el primer escaneo a travΓ©s de Nmap. Esta herramienta nos copiarΓ‘ en la clipboard los puertos encontrados.

Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. En el resultado, comprobamos que se encuentran abierta una pΓ‘gina web de Apache y un servicio SSH.

Transformaremos el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.

Accederemos a http://localhost y verificaremos el resultado en un formato mΓ‘s cΓ³modo para su anΓ‘lisis.

Web Enumeration

Realizaremos una comprobaciΓ³n de las tecnologΓ­as que utiliza el sitio web.

Al acceder a http://10.10.10.56 nos encontramos con el siguiente contenido de la pΓ‘gina web.

Realizamos una enumeraciΓ³n bΓ‘sica de directorios y pΓ‘ginas y no logramos obtener ninguna informaciΓ³n al respecto.

Realizamos nuevamente una enumeraciΓ³n de pΓ‘ginas con extensiΓ³n html y php pero tampoco logramos obtener informaciΓ³n relevante.

A travΓ©s del parΓ‘metro -f lo que le indicamos a Feroxbuster de aΓ±adir un slash / al final de cada peticiΓ³n que se realiza, esto debido que posiblemente podamos encontrar mΓ‘s informaciΓ³n de posibles directorios.

En el resultado obtenido, logramos enumerar el directorio /cgi-bin/.

Los servidores web suelen tener un directorio CGI-bin/ en la base de su Γ‘rbol de directorios para almacenar archivos ejecutables llamados CGI. Un CGI-bin es un directorio especial designado en los archivos de configuraciΓ³n de un servidor web para permitir la ejecuciΓ³n de scripts CGI en directorios especΓ­ficos.

Realizaremos una bΓΊsqueda de archivos ejecutables que se puedan encontrar en el directorio /cgi-bin/. Finalmente logramos enumerar un archivo llamadouser.sh.

Initial Access

ShelShock Attack (User-Agent) [CVE-2014-6271]

Accederemos a http://10.10.10.56/cgi-bin/user.sh y visualizamos el contenido del script.

El endpoint /cgi-bin/user.sh estΓ‘ ejecutando un script en el servidor y devolviendo su salida.

AnΓ‘lisis de la respuesta:

  • Content-Type: text/x-sh β†’ El servidor estΓ‘ sirviendo un archivo de script de shell (.sh).

  • Just an uptime test script β†’ Mensaje que indica que el script solo muestra el uptime del sistema.

  • 19:11:10 up 5 min, 0 users, load average: 0.00, 0.03, 0.01 β†’ Resultado del comando uptime, lo que sugiere que el script ejecuta comandos del sistema.

Si el servidor ejecuta el script sin restricciones, podrΓ­amos probar Shellshock o command injection enviando una carga en la cabecera User-Agent o como parΓ‘metro en la URL.

Shellshock (CVE-2014-6271) es una vulnerabilidad en Bash que permite ejecutar comandos arbitrarios a travΓ©s de variables de entorno manipuladas. Se explota inyectando cΓ³digo malicioso en cabeceras HTTP o parΓ‘metros de CGI cuando el servidor usa Bash para ejecutar scripts.

Nos encontramos con el siguiente repositorio de GitHub que nos mostraba un simple PoC de cΓ³mo intentar explotar el ShellShock.

Modificaremos el encabezado de User-Agent para inyectarle el siguiente cΓ³digo malicioso. Verificamos que en la respuesta por parte del servidor, hemos logrado la ejecuciΓ³n de comandos.

El siguiente paso, serΓ‘ lograr obtener una Reverse Shell para acceder al sistema. Nos pondremos en escucha con nc.

Inyectaremos el siguiente cΓ³digo malicioso en el User-Agent para establecernos la Reverse Shell.

Verificaremos que logramos acceder al sistema y visualizar la flag de user.txt.

Privilege Escalation

Abusing sudoers privilege (perl)

Revisaremos los grupos a los que forma parte el usuario shelly. Por otro lado, al verificar si disponΓ­amos de permisos de sudoers, nos encontramos que tenemos la capacidad de ejecutar como sudo sin proporcionar credenciales el binario de /usr/bin/perl.

En la pΓ‘gina de GTFOBins podemos encontrar diferentes maneras de cΓ³mo abusar de privilegios de binarios con sudoers. Nos encontramos la respectiva entrada del binario perl.

TambiΓ©n, podemos realizar la misma consulta a travΓ©s de la siguiente herramienta de searchbins que realiza la consulta de GTFOBins desde la misma terminal.

Realizamos la ejecuciΓ³n del comando que se nos proporciona en GTFOBins y finalmente logramos abusar del binario /usr/bin/perl como sudo y logramos el acceso a root. Finalmente, comprobamos la flag de root.txt.

Última actualización

ΒΏTe fue ΓΊtil?