← Todas las herramientas

GlassFish Research

Eclipse GlassFish · RCE autenticado · CVSS 9.1 Crítica

El hallazgo

Dos parámetros de URL de la consola de administración de GlassFish, alertSummary y alertDetail, llegan al motor jsftemplating sin tratarse como datos. Como ese motor parsea el árbol de componentes entero en vez de sustituir cadenas, una expresión ahí se evalúa.

Por qué el escapado no servía

Había un htmlEscape() aplicado al valor. Protege contra inyección de HTML, que era la amenaza que alguien tenía en mente, pero el expression language se evalúa antes de que la salida llegue a renderizarse como HTML: el escapado llega tarde.

Confirmarlo

Antes de pensar en ejecutar comandos, un payload mínimo resuelve si la expresión se evalúa siquiera:

alertSummary=%23%7B7*7%7D
→ el banner muestra "49" en vez de "7*7"

De ahí, la ejecución se confirmó primero fuera de banda con un ping ICMP a un host mío: la salida no se devuelve, así que un canal out-of-band es la única forma de ver algo.

Impacto

Con acceso autenticado a la consola esto es compromiso total del servidor: los comandos se ejecutan con los privilegios del servidor de aplicaciones. Puntuada CVSS 9.1, corregida en GlassFish 8.0.2, 7.1.1 y 7.0.26.

Análisis completo → GitHub →