Paper
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Paper
es una máquina Linux sencilla que cuenta con un servidor Apache en los puertos 80 y 443, que sirven las versiones HTTP y HTTPS de un sitio web respectivamente. El sitio web en el puerto 80 devuelve una página web de servidor predeterminada, pero el encabezado de respuesta HTTP revela un dominio oculto. Este dominio oculto ejecuta un blog de WordPress, cuya versión es vulnerable a . Esta vulnerabilidad nos permite ver la información confidencial almacenada en los borradores de las publicaciones del blog, que revelan otra URL que conduce a un sistema de chat para empleados. Este sistema de chat se basa en Rocketchat. Al leer los chats, descubrimos que hay un bot en ejecución al que se puede consultar información específica. Podemos explotar la funcionalidad del bot para obtener la contraseña de un usuario en el sistema. Una enumeración adicional de hosts revela que la versión sudo es vulnerable a y puede explotarse para elevar privilegios a root.
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Paper. Este resultado lo almacenaremos en un archivo llamado allPorts
.
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
.
Transformaremos el archivo generado targetedXML
para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.
Realizaremos una comprobación de las tecnologías que son utilizadas en el sitio web.
Revisamos las cabeceras de la página web, y nos encontramos en la cabecera X-Backend-Server
el dominio office.paper
. Esto parece indicar que existe un servidor con ese nombre de host.
Añadiremos esta nueva entrada en el archivo /etc/hosts
.
Realizaremos una comprobación de las tecnologías que son utilizadas en el sitio web, en este caso, parece que se trata de un WordPress
.
Accederemos a http://office.paper y nos encontramos con la siguiente página web en la cual se nos presenta el CMS de WordPress
en una versión 5.2.3.
Encontramos una publicación en el blog de WordPress con el título "Feeling Alone!", escrita por el usuario Prisonmike
. En ella, menciona que eliminó a otros usuarios del blog y que ahora solo queda su cuenta.
En los comentarios, otro usuario Nick
le advierte que debería eliminar "contenido secreto" de sus borradores, ya que no son tan seguros como él cree.
Esto sugiere que los borradores podrían contener información sensible. Como siguiente paso, intentaremos acceder a ellos o buscar credenciales que nos permitan entrar al panel de administración.
Realizaremos también una enumeración de subdominios de la página web. En el resultado obtenido, comprobamos la existencia del subdominio chat.office.paper
.
Añadiremos esta nueva entrada en nuestro archivo /etc/hosts
.
Accederemos a esta nueva página web, y nos encontramos con la interfaz de rocket.chat
que nos requiere proporcionar credenciales que actualmente no disponemos.
A través de searchsploit
, verificaremos posibles vulnerabilidades conocidas para la versión de WordPress
que dispone la página web.
El resultado mostró varias vulnerabilidades, destacando una en particular:
WordPress Core < 5.2.3 - Viewing Unauthenticated/Password/Private Posts
Esta vulnerabilidad permite visualizar posts privados, protegidos por contraseña o en borrador sin autenticación.
Recordando el comentario de Nick
en el blog, donde advertía a Prisonmike
sobre la presencia de "contenido secreto" en sus borradores, esta vulnerabilidad podría permitirnos acceder a información sensible si logramos explotarla.
Como siguiente paso, intentaremos reproducir la explotación de esta vulnerabilidad para ver si es posible acceder a los borradores y extraer información útil.
La vulnerabilidad reportada, es identificada mediante el siguiente CVE-2019-17671
.
En WordPress anterior a 5.2.4, es posible la visualización no autenticada de cierto contenido porque la propiedad de consulta estática es manejada inapropiadamente.
Realizamos una búsqueda en WPScan
para verificar la existencia de la vulnerabilidad y del PoC, y nos encontramos con la prueba de concepto para explotar esta vulnerabilidad.
Al acceder a los borradores, encontramos que los empleados fueron removidos del blog y migrados a un nuevo sistema de chat privado. Además, se descubrió una URL de registro para este sistema:
Este enlace podría permitirnos acceder al chat y obtener más información interna. Como siguiente paso, exploraremos este sistema en busca de credenciales o datos sensibles.
Especificaremos nuestro nombre de usuario para finalizar el registro.
Al acceder finalmente al rocket.chat
, verificamos que pasado un tiempo se nos añade a un canal de grupo llamado general
en el cual parecen estar los empleados de la empresa.
Dentro del sistema de chat, encontramos un bot llamado Recvclops, aparentemente desarrollado por Dwight para responder preguntas frecuentes de los empleados. Sin embargo, lo más interesante es que el bot tiene acceso a archivos y directorios en la carpeta "Sales", lo que podría representar una vulnerabilidad si se puede interactuar con él de manera controlada.
Funcionalidades del bot:
Conversación básica: Puede responder preguntas generales sobre Dwight.
Chistes predefinidos: Responde preguntas específicas relacionadas con vendedores.
Acceso a archivos: Permite solicitar el contenido de archivos dentro del directorio Sales.
Listado de archivos: Puede enumerar los archivos disponibles en el directorio Sales.
Consulta de hora: Devuelve la hora actual.
Esto es particularmente interesante, ya que sugiere que el bot tiene permisos de lectura sobre archivos internos y puede actuar como un canal no autorizado para obtener información del sistema. Como siguiente paso, intentaremos interactuar con el bot para extraer archivos sensibles.
El siguiente paso, fue interactuar con el chatbot
, en el cual mediante el comando help
nos indicaba el listado de los comandos que podíamos utilizar.
Dado que el chatbot Recvclops tiene acceso a archivos en el directorio Sales, probamos sus funcionalidades de listado y lectura de archivos.
Listar archivos:
Ejecutamos recyclops list sales
y obtuvimos un listado del directorio Sales, lo que sugiere que el bot ejecuta un comando similar a ls
.
Leer archivos:
Intentamos recyclops file portfolio.txt
, un archivo que identificamos en el listado anterior.
El bot indica que usa un comando equivalente a cat
, pero en este caso no logramos visualizar el contenido del archivo.
Este comportamiento confirma que el chatbot tiene permisos de lectura en Sales y podría ser explotado para obtener información sensible. Como siguiente paso, probaremos si hay restricciones o formas de evadirlas.
Tras confirmar que el chatbot ejecuta comandos en el sistema, intentamos inyectar instrucciones adicionales utilizando operadores como &&
y ;
. Sin embargo, al hacerlo, recibimos el siguiente mensaje de error:
"Stop injecting OS commands!"
Esto indica que el bot tiene alguna validación para detectar intentos de ejecución de comandos arbitrarios. Como siguiente paso, evaluaremos si hay formas de evadir esta restricción o si podemos manipular la solicitud de otra manera para obtener ejecución de comandos en el sistema.
Tras confirmar que el chatbot ejecuta comandos en el sistema, intentamos acceder a archivos fuera del directorio Sales utilizando secuencias de ../
para movernos en la estructura de directorios.
Al ejecutar recyclops file ../../../etc/passwd
, logramos que el bot nos devolviera el contenido del archivo /etc/passwd
.
Esto confirma que podemos leer archivos arbitrarios en el sistema, funcionando como una vulnerabilidad de Local File Inclusion (LFI).
Este hallazgo nos brinda una vía potencial para obtener credenciales, configuraciones sensibles o incluso identificar usuarios con acceso al sistema. Como siguiente paso, intentaremos leer otros archivos críticos que puedan ayudarnos a escalar privilegios o comprometer el sistema.
Tras confirmar que podíamos leer archivos arbitrarios con recyclops file
, intentamos aprovechar el comando recyclops list
para explorar otros directorios:
Ejecutamos recyclops list ../
, lo que nos permitió listar el contenido de /home/dwight
. Dentro de este directorio, identificamos la presencia del archivo user.txt
.
Intentamos leerlo con recyclops file ../user.txt
, pero el bot devolvió un error de "Access Denied", indicando que hay restricciones de permisos sobre ciertos archivos.
Ahora que tenemos la capacidad de listar directorios y leer archivos arbitrarios en el sistema, exploraremos otras ubicaciones clave en busca de información sensible o credenciales que nos permitan avanzar en la explotación.
Continuamos explorando el sistema utilizando recyclops list
para identificar archivos de interés.
Ejecutamos recyclops list ../hubot
, lo que nos permitió listar el contenido del directorio hubot
.
Encontramos un archivo .env
, que es comúnmente utilizado para almacenar variables de entorno, incluyendo credenciales, claves API y configuraciones sensibles.
Dado que ya hemos demostrado la capacidad de leer archivos arbitrarios, intentaremos acceder al contenido de .env
para buscar información que nos ayude a escalar privilegios o comprometer otros servicios en el sistema.
Al ejecutar recyclops file ../hubot/.env
, logramos leer el contenido del archivo y encontramos información sensible:
Credenciales del usuario recyclops
rocketchat_user=recyclops
rocketchat_passwd=Queenofblad3s!23
Estas credenciales podrían permitirnos acceder a Rocket.Chat con el usuario recyclops
, lo que abre la posibilidad de obtener más información, interactuar con otros usuarios o incluso buscar vulnerabilidades dentro del sistema de mensajería. Procederemos a probarlas para evaluar su alcance.
Accederemos a http://chat.office.paper y probaremos de autenticarnos con las credenciales del usuario recyclops
encontradas en el archivo anterior.
Al intentar iniciar sesión en Rocket.Chat con las credenciales obtenidas (recyclops:Queenofblad3s!23
), nos encontramos con un mensaje de advertencia:
"Nice Try Skynet! Bots are not allowed to login via Web Console!"
Este mensaje indica que el usuario recyclops
está configurado como un bot y tiene restricciones para autenticarse a través de la interfaz web
Al aceptar el mensaje anterior, se nos muestra el acceso de recyclops
en el rocket.chat
, en el cual podemos localizar el chat que tiene abierto con nosotros y con otros usuarios, pero no conseguimos disponer de acceso, ya que inmediatamente se cerraba la sesión.
Dado que el usuario que creó este chatbot
era el usuario dwight
y dado que nos encontrábamos en su directorio con el chat, probaremos de autenticarnos al SSH
.
Verificamos que finalmente logramos obtener el acceso al sistema y logramos visualizar la flag user.txt.
Realizaremos una verificación inicial de los privilegios que dispone el usuario actual. Verificamos que no disponemos de algún grupo interesante ni permisos de sudoers
.
Por otro lado, también revisamos binarios con permisos de SUID
pero no logramos obtener nada interesante.
Realizaremos una enumeración con linpeas.sh
, este script que se encarga de realizar una enumeración del sistema Linux lo deberemos de disponer en nuestro equipo local.
Compartiremos el script mediante un servidor web.
Desde el equipo comprometido, nos descargaremos el script y le daremos los permisos de ejecución correspondientes.
En el resultado obtenido de la enumeración con linpeas.sh
, nos encontramos que la versión de sudo
parece ser vulnerable ya que se nos recalca en rojo.
Por otro lado, en el escaneo con linpeas.sh
se nos muestra que es vulnerable al siguiente CVE-2021-3560
.
Se descubrió que se podía engañar a polkit para que pasara por alto las comprobaciones de credenciales de las solicitudes de D-Bus, elevando los privilegios del solicitante al usuario root. Esta falla podría ser utilizada por un atacante local sin privilegios para, por ejemplo, crear un nuevo administrador local. La mayor amenaza de esta vulnerabilidad es para la confidencialidad e integridad de los datos, así como para la disponibilidad del sistema.
Verificaremos también la versión exacta de sudo
a través de los siguientes comandos.
Realizando una búsqueda del exploit. nos encontramos con el repositorio del creador de la máquina Paper
en el cual nos ofrecen un script en Bash
que realiza la explotación de Polkit
.
Nos descargaremos el script poc.sh
mediante el siguiente comando y lo compartiremos a través de un servidor web.
Desde el equipo vulnerable, nos descargaremos el script de poc.sh
que estamos compartiendo y le proporcionaremos los permisos de ejecución.
Realizaremos la explotación de la vulnerabilidad. Esta script básicamente lo que realiza finalmente es crear un usuario que tenga privilegios para posteriormente convertirnos en usuario root
.
Probablemente deberemos de repetir el proceso varias veces, ya que no suele funcionar a la primera. A continuación, se muestra que se ha creado el usuariosecnigma
correctamente y al acceder con su usuario y ejecutar un sudo bash
, finalmente logramos obtener acceso como root
y visualizar la flag root.txt
A través de la herramienta de , 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.
Accederemos a y verificaremos el resultado en un formato más cómodo para su análisis.
Accederemos ay nos encontramos con la siguiente página web que aparentemente no parece ofrecer nada relevante.
Accederemos a y probaremos de registrarnos como un nuevo usuario.