Reconocimiento
Empezamos viendo si la máquina víctima está disponible:
|
|
|
|
Recordemos mirar el TTL para ver ante que máquina nos encontramos ( en este caso GNU/Linux).
Escaneamos los puertos para ver cuáles están abiertos:
|
|
|
|
Vemos que ftp está desplegado, pero no podemos acceder a él mediante el usuario ‘anónimo’. Seguimos con el reconocimiento, es decir, lanzar con nmap una serie de scripts predefinidos para ver la versión de los distintos servicios:
|
|
|
|
Añadimos el dominio a nuestro fichero “/etc/hosts” y vemos la página web.
Obteniendo acceso a la máquina víctima
Plugin WP (CVE-2022-0739)
Lo primero que llama la atención es:
Por tanto hay que buscar a ver si hay algún plugin instalado y ver si es vulnerable; echando un vistazo al fuente de la página:
Haciendo una búsqueda rápida, encontramos en wpscan:
Lo que hay que hacer es crear una nueva entrada en el calendario y obtener un nonce de la petición POST al servidor:
Una vez obtenido, en mi caso, he automatizado la SQLi con el siguiente script:
|
|
Esto permite obtener la salida del SQLi por consola y fácilmente poder filtrar por expresiones regulares. La ‘query’ la introducimos como primer argumento a la hora de ejecutar el script.
Ejecutando:
John the Ripper
Vemos que la vulnerabilidad es explotada correctamente y ya podemos empezar a recopilar información, primero las tablas que nos interesan, después las columnas de esas tablas y posteriormente usuarios y contraseñas (hash):
Guardamos las contraseñas en un fichero y ejecutamos ‘john’ para obtener la contraseña:
Con esto accedemos a WP como manager.
XXE
Una vez dentro podemos subir archivos … aunque solo deja subir archivos de sonido/imagen. Podemos ver la versión exacta del wordpress y a partir de ello encontrar una serie de vulnerabilidades. Tras ver si alguna de ellas era útil encontré algo que no conocía hasta ahora, llamado XXE; esta vulnerabilidad nos permite obtener el contenido de ficheros mediante la inyección de XML. Principalmente intento listar el contenido de ‘/etc/passwd’ para ver si funciona. Tenemos que crear un fichero con los primeros bytes que tendría un fichero de audio y posteriormente el XML pertinente. Una vez hecho esto apuntamos hacia un servicio web de nuestra máquina que contendrá el código restante para filtrar archivos. Una vez hecho esto, obtenemos (codificado) el contenido del fichero en cuestión:
Decodificando:
Vemos un usuario potencial. Intentamos listar ficheros de configuración, en este caso veamos el del WP:
Dos credenciales; una de ellas para BBDD y otra para el ftp del inicio.
Buscando ficheros con FTP
Tras buscar un largo rato, encontré el siguiente fichero, que parece que gestiona el envío de email una vez que se crear un nuevo evento; en él obtenemos las credenciales del usuario anterior y accedemos al equipo víctima
Escalada de Privilegios
Passpie y GPG
Listando por ficheros que pertenecen al usuario, podemos encontrar un software llamado ‘passpie’, gestor de contraseñas. Hay algunos ficheros que nos interesan más que otros; si ejecutamos ‘passpie’ vemos que hay dos credenciales la de nuestro usuario y la de root; si intentamos exportarlas no nos dejará dado que tenemos que tener la “passphrase”. Para ellos nos descargamos el archivo ‘.keys’ que contiene las claves privadas y públicas pgp; con gpg2john pasamos la clave privada a un formato entendible para ‘The Ripper’ a ver si tenemos suerte y podemos obtener la clave que nos falta; tras unos segundos la obtenemos y podemos acceder a una consola con permisos de administrador: