
Ejecución Remota de Código Pre-Auth en Confluence mediante Inyección OGNL (CVE-2022-26134)
Confluence Pre-Auth Remote Code Execution via OGNL Injection (CVE-2022-26134)
El 30 de mayo de 2022, una organización llamada Volexity identificó una vulnerabilidad de ejecución remota de código sin autenticación (con una puntuación de 9.8 en NIST) en las ediciones Confluence Server y Data Center de Atlassian (https://www.atlassian.com/software/confluence).
Confluence es un marco de trabajo colaborativo de documentación y gestión de proyectos para equipos. Confluence ayuda a realizar un seguimiento del estado del proyecto al ofrecer un espacio de trabajo centralizado para los miembros.
Las siguientes versiones de Confluence son vulnerables a este CVE:
Puede ver la entrada de NIST para CVE-2022-26134 aquí (https://nvd.nist.gov/vuln/detail/CVE-2022-26134).
Este CVE aprovecha una vulnerabilidad en el lenguaje de expresiones OGNL (Object-Graph Navigation Language) para Java. OGNL se utiliza para obtener y establecer propiedades de objetos Java, entre muchas otras cosas.
Por ejemplo, OGNL se utiliza para vincular elementos del front-end como cuadros de texto con objetos del back-end y se puede usar en aplicaciones web basadas en Java como Confluence. Podemos ver cómo se utiliza OGNL en la captura de pantalla a continuación. Los valores se ingresan en un formulario web, donde se almacenarán en objetos dentro de la aplicación.
Explotación Podemos abusar del hecho de que OGNL puede modificarse; podemos crear un payload para probar y verificar explotaciones.
Para explotar esta vulnerabilidad en OGNL, necesitamos hacer una solicitud HTTP GET y colocar nuestro payload dentro de la URI. Por ejemplo, podemos indicar al runtime de Java que ejecute un comando como crear un archivo en el servidor: ${@java.lang.Runtime@getRuntime().exec("touch /tmp/thm/")}/.
Esto deberá estar codificado en URL. Puede usar este sitio web para ayudar a codificar sus payloads en URL (tenga en cuenta que su payload de curl deberá terminar con una barra diagonal / y no con $2F).
Command:
user@host~ curl -v http://<target_ip>:8090/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22touch%20/tmp/thm%22%29%7D/
Ahora, verifique que el comando anterior se ejecutó correctamente ejecutando el comando "ls /tmp" en el comando anterior.
Hay algunos PoC funcionales disponibles; demostraré el PoC de Samy Younsi (Mwqda) escrito en Python y alojado en GitHub (https://github.com/h3v0x/CVE-2022-26134).
Detección
Archivos de registro Confluence es un servidor Apache Tomcat cuyo registro se encuentra en /opt/atlassian/confluence/logs. Puede usar comandos como grep para buscar solicitudes HTTP GET de payloads que utilizan el runtime de Java para ejecutar comandos. Por ejemplo:
grep -R "/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22" in catalina.out
YARA Si tiene Yara instalado en el servidor que ejecuta Confluence, Volexity (los descubridores de la vulnerabilidad) ha creado la regla Yara para que la use, la cual se proporciona en este repositorio así como en el siguiente enlace (https://github.com/volexity/threat-intel/blob/main/2022/2022-06-02%20Active%20Exploitation%20Of%20Confluence%200-day/indicators/yara.yar).
Parcheo Atlassian ha publicado un aviso para sus productos afectados por este CVE, que puede leer aquí (https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html). Para resolver el problema, debe actualizar su versión de Confluence. La lista sugerida en el momento de la publicación es:
Recuerde, OGNL es un lenguaje de expresiones para aplicaciones web basadas en Java, por lo que esta vulnerabilidad también se aplicará a otras aplicaciones web que ejecuten las mismas clases que utiliza Confluence.
Material de lectura adicional: