Reconocimiento
Comprobamos la disponibilidad de la máquina objetivo:
|
|
|
|
ttl = 63 por tanto nos enfrentamos a una máquina Linux por proximidad.
Comprobamos los servicios expuestos:
|
|
|
|
Extraemos los puertos relevantes y lanzamos una serie de scripts de reconocimiento predefinidos por nmap para recopilar información sobre los servicios expuestos:
|
|
|
|
Nmap:
|
|
|
|
Obteniendo acceso a la máquina víctima
Directory Path Traversal
Echando un vistazo a la página web accesible a través del puerto 8080 llegamos a un punto donde subir los archivos; a pesar de intentar pasar algunas restricciones, no se puede subir un archivo php, solo acepta imágenes; jugando un poco con las peticiones al subir imágenes:
Vía potencial para poder listar directorios y ojear archivos del sistema:
Dos usuarios potenciales: phil y frank. Veamos si podemos extraer algo de información relevante de los directorios de estos usuarios:
Echando un vistazo a los archivos con los que está construido el sitio web no parece haber opción de pasar las restricciones y subir algún archivo php. La contraseña anterior tampoco sirve para el usuario phil, por lo menos para ssh. Por lo que habrá que seguir indagando.
CVE-2022-22963(RCE)
La web está programada sobre el framework spring; echando un vistazo al “pom.xml” del proyecto maven podemos ver esto y la versión de las dependencias. Con una breve búsqueda podemos encontrar la vulnerabilidad que afecta a Spring Cloud y la cual nos dará la posibilidad de ejecutar comandos de forma remota: CVE-2022-22963.
Automatizo el exploit para solo tener que introducir el comando pertinente, puedes verlo aquí o en la página de CVE exploits.
Ya con esto podríamos obtener una “reverse shell”, pero prefiero obtener una consola por ssh; creo un nuevo par de claves inicio y simple servidor web con Python y:
|
|
|
|
Finalmente:
|
|
Escalada de privilegios
Escalada de privilegios de usuario
Una vez dentro como el usuario frank utilizamos la contraseña para phil que anteriormente hemos visto:
Lo más relevante es que pertenecemos al grupo ‘staff’. Vemos la flag del usuario.
Escalada de privilegios vertical a root
Tras buscar un poco encuentro un directorio en opt sobre el que el grupo “staff” tiene permisos; en él hay un archivo yaml llamado “playbook”. Esto parece ser una tarea automática de ansible.
Echo un vistazo a ver si encuentro la tarea de automatización:
|
|
Y el script recopila lo siguiente lo siguiente:
|
|
Por tanto preparamos un archivo siguiendo la sintaxis YAML para que ejecute un comando como root siguiendo la tarea programada:
|
|
Con esto le damos permisos suid a bash y podemos obtener permisos de administrador.