Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2021-26084 — Análisis técnico y exploit de prueba de concepto para CVE-2021-26084, una vulnerabilidad de inyección OGNL en Atlassian Confluence Server. Incluye desglose de la causa raíz, mapeo de parámetros vulnerables y guía de detección. | Kitploit
Herramientas/GitHubGitHub/nahcusira/cve-2021-26084
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de PenetraciónAprendizaje y Educación
GitHubnahcusira/cve-2021-26084

CVE-2021-26084

Análisis técnico y exploit de prueba de concepto para CVE-2021-26084, una vulnerabilidad de inyección OGNL en Atlassian Confluence Server. Incluye desglose de la causa raíz, mapeo de parámetros vulnerables y guía de detección.

Ver Repositorio
1hace 2 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2021-26084

Alcance de la afectación

Versión < 6.13.23

6.14.0 ≤ Versión < 7.4.11

7.5.0 ≤ Versión < 7.11.6

7.12.0 ≤ Versión < 7.12.5

Causa, Método de explotación

Confluence utiliza un framework para mapear URLs a clases Java, creando lo que se denomina una "acción". Las URLs de acción terminan en ".action" y se definen en el archivo xwork.xml en confluence-<version>.jar y en el archivo atlassian-plugin.xml dentro de los archivos JAR de los complementos incluidos. Cada acción contiene al menos un atributo name, que define el nombre de la acción, un atributo class, que define la clase Java que ejecuta la acción, y al menos un elemento result que determina la plantilla Velocity que se mostrará después de que se invoque la acción, basado en el resultado de la acción. Los valores comunes devueltos por las acciones son "error", "input", "success", pero cualquier resultado puede usarse si coincide con el elemento result en el XML de XWork. Las acciones pueden contener un atributo method que permite llamar a un método específico de la clase Java especificada. Cuando no se especifica ningún comando, se llama al método doDefault(). A continuación se muestra la entrada de acción para la acción createpage-entervariables:

image

El método doEnter() de la clase com.atlassian.confluence.pages.actions.PageVariablesAction procesa las solicitudes a doenterpagevariables.action y devuelve los valores "error", "input", "success". Esto lleva a que se renderice la plantilla Velocity.

Aquí, el valor del atributo "name" de un elemento acción corresponde a una ruta / <nameValue>.action y el elemento que contiene la plantilla se mostrará como parte de la respuesta basada en error/success, etc. Así que, según este ejemplo, simplemente accediendo a /pages/doenterpagevariables.action se mostrará el archivo de plantilla Velocity.

image

Podemos ver cómo se renderiza la plantilla Velocity en la página HTML

image

Ingresar el nombre de la etiqueta en la plantilla como parámetro y notar que los valores se toman de los parámetros de la solicitud y se devuelven en la respuesta.

image

Uso de #tag : #tag ("atributo1", "atributo2", "atributo3")

Estos atributos durante el renderizado se obtienen mediante AbstractTagDirective.applyAttributes()

image

#tag ("Hidden" "name='queryString'" "value='ahihihi'")

Después de que los atributos se extraen mediante el método AbstractTagDirective.applyAttributes(), se pasan a AbstractUITag.doEndTag() → AbstractUITag.evaluateParams()

image

Luego se pasan a WebWorkTagSupport.findValue() → OgnlValueFinder.findValue() con una expresión

image

Después se pasa a SafeExpressionUtil.isSafeExpression()

image

Aquí la expresión se ha compilado, verificado en la lista negra y almacenada en caché. Tras la compilación, se compila a una forma ASTConst que, al evaluarse, devuelve la cadena compilada previamente.

image

Cuando se agrega una comilla simple ' a la expresión desde la entrada, se escapa a entidad HTML

image

El punto de escape está en HtmlAnnotationEscaper.annotatedValueInsert()

image

Aquí se llama al método ognl.JavaCharStream.readChar() que evalúa los caracteres de escape Unicode, por lo tanto, al pasar \u0027 se convierte a '. De esta manera se puede escapar y agregar una expresión OGNL

image

Pero hay que superar la lista negra de OGNL de la siguiente manera

image

Se puede superar utilizando accesores de arreglos en lugar del método getClass o la propiedad .class.

queryString=aaa\u0027%2b#{\u0022\u0022[\u0022class\u0022]}%2b\u0027bbb

image

Método de detección

Supervisar todas las solicitudes de tráfico HTTP donde el componente de ruta de la URI de la solicitud contenga una de las cadenas en la columna "URI Path" de la siguiente tabla:

URI Path | Vulnerable Parameters

/users/darkfeatures.action | featureKey

/users/enabledarkfeature.action | featureKey

/users/disabledarkfeature.action | featureKey

/login.action | token

/dologin.action | token

/signup.action | token

/dosignup.action | token

/pages/createpage-entervariables.action | queryString, linkCreation

/pages/doenterpagevariables.action | queryString

/pages/createpage.action | queryString

/pages/createpage-choosetemplate.action | queryString

/pages/docreatepagefromtemplate.action | queryString

/pages/docreatepage.action | queryString

/pages/createblogpost.action | queryString

/pages/docreateblogpost.action | queryString

/pages/copypage.action | queryString

/pages/docopypage.action | queryString

/plugins/editor-loader/editor.action | syncRev

Si se encuentra dicha solicitud, se debe verificar el método de la solicitud HTTP. Si el método de solicitud es POST, buscar los Vulnerable Parameters correspondientes de la tabla anterior en el cuerpo de la solicitud HTTP, y si el método de solicitud es GET, buscar los parámetros en la request-URI de la solicitud HTTP. Verificar si el valor de alguno de los Vulnerable Parameters contiene la cadena \u0027 o su forma codificada en URL. Si es así, se considera que el tráfico es malicioso y podría estar ocurriendo un ataque de explotación de esta vulnerabilidad.

Descargar herramienta