0Day

Adrian Vidal Portofolio
# Escaneo En primer lugar se realiza un reconocimiento de la máquina objetivo, determinando ası́ que se trata de una máquina Linux. A continuación se realiza un primer escaneo con la herramienta _nmap_ para conocer los puertos abiertos (figura [1](../assets/img/0day/0.png "Puertos abiertos")): ``` nmap -p- --open --min-rate 5000 -sS -n -Pn -oN allPorts ``` - -p-: escaneo de todos los puertos. - –open: se muestran los puertos abiertos exclusivamente. - –min-rate: tasa de envı́o de paquetes. - -sS: Opción por defecto, escaneo rápido. - -n: no se aplica resolución DNS. - -Pn: se evita el descubrimiento de hosts.
![Puertos abiertos | center](../assets/img/0day/0.png )
Los puertos abiertos se corresponden al servicio _ssh_ y _http_. El siguiente paso será conocer las versiones de cada uno de los servicios, obteniendo los resultados visibles en la figura [2](../assets/img/0day/0_1.png "Versiones de los servicios"): ``` nmap -p22,80 -sCV -oN versionPorts ```
![Versiones de los servicios | center](../assets/img/0day/0_1.png )
Observando la figura [2](../assets/img/0day/0_1.png "Versiones de los servicios") se obtienen dos conclusiones. En primer lugar, el servicio _ssh_ utiliza una versión desactualizada del mismo, actualmente se encuentra en la versión 9.4. Esta versión es vulnerable a una enumeración de usuarios. Por otro lado, el servicio _http_ es un Apache httpd en su versión 2.4.7, por lo que el siguiente paso será el reconocimiento de la página web que se encuentra empleando dicho servicio. # Servicio HTTP Cuando se accede al servicio web se muestra al usuario la siguiente pantalla (figura [3](../assets/img/0day/1.png "Página principal")):
![Página principal | center](../assets/img/0day/1.png )
A través de la herramienta whatweb o wappalyzer se obtienen las tecnologı́as con las que se ha construı́do la página web (imagen [4](../assets/img/0day/2.png "Tecnologías")):
![Tecnologías | center](../assets/img/0day/2.png )
De esta ejecución no se consigue información de importancia para la resolución de la máquina, por lo que se realizará la búsqueda de directorios y archivos activos. # Reconocimiento ## Fuzzing En esta sección se detallarán los hallazgos de directorios y archivos relevantes que faciliten la resolución de la máquina. Se empleará la herramienta _ffuf_ y diferentes diccionarios disponibles en [SecLists](https://github.com/danielmiessler/SecLists) para el descubrimiento de, en primer lugar, directorios y, finalmente, de archivos. En cuanto a directorios, se presentan en la figura [5](../assets/img/0day/5.png "Fuzzing") los resultados obtenidos: ``` ffuf -w -u ```
![Fuzzing | center](../assets/img/0day/4.png )
Los resultados presentan directorios que resultan de gran interés, principalmente el denominado como secret. Al comprobar dicho subdirectorio se nos presenta un página con una imagen de una tortuga, siendo esta la siguiente (figura [6](../assets/img/0day/3.png "Secret")):
![Secret | center](../assets/img/0day/3.png )
El siguiente directorio que se ha comprobado, es _backup_. Este subdirectorio nos presenta una clave privada rsa, por lo que será de valor almacenarla por si en un futuro es de utilidad (figura [7](../assets/img/0day/rsa.png "RSA")).
![RSA | center](../assets/img/0day/rsa.png )
A continuación, se revisa el subdirectorio _cgi-bin_. Este subdirectorio almacena diferentes scripts de ejecución automatizada, por lo que, sobre este se realizará fuzzing sobre archivos (figura [8](../assets/img/0day/8.png "Fuzzing cgi-bin")). ``` ffuf -w -u ```
![Fuzzing cgi-bin | center](../assets/img/0day/8.png )
En la figura [8](../assets/img/0day/8.png "Fuzzing cgi-bin") se observan diferentes archivos sobre los que destaca uno en particular, _test.cgi_. Este archivo puede indicar que el sistema es vulnerable a [shellshock](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjYmN2L3rmDAxUlUKQEHUYEDgkQFnoECBcQAQ&url=https%3A%2F%2Fowasp.org%2Fwww-pdf-archive%2FShellshock_-_Tudor_Enache.pdf&usg=AOvVaw0uJsnx_9Rjr7fUx9CUYcMG&opi=89978449), vulnerabilidad de bash que permite la ejecución de código remoto. Para comprobar si el sistema es vulnerable a ella, se emplea la herramienta nmap y el script dedicado a dciha vulnerabilidad: ``` nmap -sV -p- --script http-shellshock --script-args uri=/cgi-bin/test.cgi,cmd=ls ``` La ejecución proporciona la salida presentada en la figura [9](../assets/img/0day/10.png "Shellshock") revela que el sistema sı́ es vulnerable a este error. Por lo que el siguiente paso será la explotación.
![Shellshock | center](../assets/img/0day/10.png )
# Explotación Para realizar la explotación de la vulnerabilidad encontrada se utiliza la herramienta _Burpsuite_, que nos permitirá modificar las peticiones realizadas al servidor. En primer lugar, para la explotación de dicho error se debe enviar a través de una cabecera: ``` () { :;} ``` Como ya se ha visto que el sistema es vulnerable, el comando a inyectar será una reverse shell que nos garantizará el acceso al sistema. Para esto, empleamos la herramienta netcat para ponernos a la escucha en un puerto: ``` nc -nlvp 4444 ``` El siguiente paso es interceptar con _Burpsuite_ la petición a _http:///cgi- bin/test.cgi_ y enviarla al apartado _Repeater_. Una vez hecho esto, se reemplazará en la cabecera el _User-Agent_ de la siguiente manera (figura [10](../assets/img/0day/12.png "Vulnerable")):
![Vulnerable | center](../assets/img/0day/12.png )
Una vez enviada la petición se obtiene acceso al sistema (figura [11](../assets/img/0day/13.png "Conexión")).
![Conexión | center](../assets/img/0day/13.png )
Una vez obtenido acceso al sistema, se realiza una navegación en este, descubriendo ası́ al usuario _ryan_ y a la _flag_ de usuario, como se puede ver en la figura [12](../assets/img/0day/15.png "User Flag").
![User Flag | center](../assets/img/0day/15.png )
Una vez obtenida la primera de las flags, se debe realizar la escalada de privilegios. Dicha escalada se verá en la siguiente sección. # Escalada de privilegios Lo primeiro que se ha intentado es un inicio de sesión a través del servicio _ssh_, empleando el usuario _ryan_ y la clave obtenida en el subdirectorio _backup_, pero sin obtener éxito. Lo siguiente ha sido la comprobación de posibles ejecuciones de comandos como administrador, empleando para esto el comando: ``` sudo -l ``` Esta opción tampoco ha tenido éxito ya que se requiere de la contraseña de www-data. El siguiente paso dado ha sido comprobar la versión del sistema que se esta empleando (figura [13](../assets/img/0day/16_1.png "Sistema utilizado")). Dicha versión esta obsoleta y una búsqueda de la misma proporciona un exploit, como se puede ver en la figura [14](../assets/img/0day/16.png "Versión obsoleta").
![Sistema utilizado | center](../assets/img/0day/16_1.png )
![Versión obsoleta | center](../assets/img/0day/17.png )
Una vez obtenido el exploit, se crea un servidor web con python para poder recuperar el archivo desde la máquina objetivo y su posterior compilación (figura [15](../assets/img/0day/18.png "Compilación")), previa comprobación de existencia de gcc: ``` python -m http-server ```
![Compilación | center](../assets/img/0day/18.png )
Al ejecutar el programa se obtiene acceso como root (figura [16](../assets/img/0day/19.png "Ejecución")) y se consigue la última flag (figura [17](../assets/img/0day/20.png "Root Flag")).
![Ejecución | center](../assets/img/0day/19.png )
![Root Flag | center](../assets/img/0day/20.png )