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-2023-22515 — Tutorial paso a paso del exploit para CVE-2023-22515, una vulnerabilidad crítica de control de acceso roto en Atlassian Confluence Server y Data Center, que permite la creación remota de cuentas de administrador. | Kitploit
Herramientas/GitHubGitHub/tranphuc2005/cve-2023-22515
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubtranphuc2005/cve-2023-22515

CVE-2023-22515

Tutorial paso a paso del exploit para CVE-2023-22515, una vulnerabilidad crítica de control de acceso roto en Atlassian Confluence Server y Data Center, que permite la creación remota de cuentas de administrador.

Ver Repositorio
1hace 1 añoAú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-2023-22515

Información principal sobre CVE-2023-22515

  • Producto afectado: Atlassian Confluence Data Center & Confluence Server.

  • Fecha de publicación: 04/10/2023.

  • Gravedad: Critical (CVSS ~ 10.0).

  • Tipo de vulnerabilidad: Broken Access Control / Improper Authorization → permite al atacante crear una cuenta de administrador de forma remota.

  • El fallo se encuentra en el mecanismo de configuración de Confluence

  • Impacto: Confluence Data Center & Server 8.0.0 → 8.5.1.

Implementación de la búsqueda del fallo

  • Primero, al instalar Confluence hay un paso de configuración para que el servidor funcione, por ejemplo, la conexión a la base de datos, la creación de usuarios, ... Estas tareas se realizan a través del navegador web y las rutas URL /setup/. El último paso de la configuración será /setup/setupadministrator.action.
  • Una vez completada, esta configuración ya no se invoca. Si intentamos invocarla, mostrará un mensaje de error.

1

  • Esto proviene de uno de los interceptores, que es de

SetupCheckInterceptor
struts.xml
  • struts.xml es el archivo de configuración central para Struts.

  • Define cómo Confluence mapea URL → Action class → View template.

  • También declara interceptors (clases que interceptan y procesan la petición antes/después de ejecutar la action).

1

En SetupCheckInterceptor se llama a BootstrapUtils.getBootstrapManager().isSetupComplete()

root@kitploit:~
public String intercept(ActionInvocation actionInvocation) throws Exception {
    if (BootstrapUtils.getBootstrapManager().isSetupComplete() && ContainerManager.isContainerSetup())
        return "alreadysetup"; 
    return actionInvocation.invoke();
}

Explicación

  • BootstrapUtils.getBootstrapManager().isSetupComplete()
    → Comprueba si Confluence ha completado el proceso de configuración (mediante el asistente, introducción de licencia, creación del usuario admin) o no.

  • ContainerManager.isContainerSetup()
    → Comprueba si el contenedor Spring IoC se ha inicializado por completo.

  • Si ambas condiciones son verdaderas:
    → Significa que el sistema ya está completamente configurado → el interceptor devuelve "alreadysetup" inmediatamente.
    → No permite continuar con la action (normalmente las actions de configuración como SetupDatabaseAction, SetupLicenseAction, …).

  • Si la configuración no está completa:
    → Se llama a actionInvocation.invoke() → es decir, continúa ejecutando la action que solicitó el usuario.

getBootstrapManager() → normalmente devuelve DefaultAtlassianBootstrapManager, que gestiona toda la información de configuración central durante el proceso de configuración.

  • En DefaultAtlassianBootstrapManager.isSetupComplete podemos ver que se llama al método de configuración de la aplicación isSetupComplete para comprobar si el proceso de configuración ha finalizado.

1

=> Si hacemos que isSetupComplete = False, entonces SetupCheckInterceptor no devolverá “alreadysetup” y /setup/setupadministrator.action será accesible.

A continuación tenemos un ServerInfoAction

  • ServerInfoAction = Action pública en Confluence → permite que cualquier usuario la invoque sin necesidad de iniciar sesión ni token CSRF. Al ejecutarse, solo devuelve "success" → se asigna a una plantilla que muestra la información del servidor.

1

  • Hereda de ConfluenceActionSupport
  • En ConfluenceActionSupport vemos que getBootstrapStatusProvider devuelve BootstrapStatusProviderImpl, la implementación que estamos buscando.

1

  • En BootstrapStatusProviderImpl encontramos getApplicationConfig que devuelve la configuración de la aplicación.

1

  • Finalmente, dentro de ApplicationConfig se puede ver que implementa la comprobación de setSetupComplete.

1

  • Combinando las partes anteriores, podemos deducir una cadena de métodos para establecer setSetupComplete = false
root@kitploit:~
getBootstrapStatusProvider(). getApplicationConfig (). setSetupComplete ( false );
  • XWorks2 nos permite realizar este tipo de cadena de getters/setters; podemos construir un parámetro HTTP para implementar la cadena de llamadas a métodos anterior utilizando la notación que requiere XWorks2.
root@kitploit:~
bootstrapStatusProvider.applicationConfig.setupComplete=false
  • Aprovecharemos /server-info.action, una URL en Confluence gestionada por ServerInfoAction, porque es un endpoint público que no requiere autenticación.
root@kitploit:~
/server-info.action?bootstrapStatusProvider.applicationConfig.setupComplete=false

1

Comprobemos el Debug:

  • setupComplete (parámetro pasado al método)
    → false
    Es decir, el método se está llamando con el parámetro false.

  • this.setupComplete (variable de instancia del objeto ApplicationConfig)
    → true (antes de la asignación).

  • Cuando el comando termina de ejecutarse → this.setupComplete pasará a ser false.

1

  • Después de completar el paso anterior, probemos de nuevo el endpoint /setup/setupadministrator.action y veremos que se accede correctamente.

1

  • Después de crearlo, inicia sesión y verifica de nuevo los permisos.

1

Descargar herramienta