Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/tranphuc2005/cve-2023-22515
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubtranphuc2005/cve-2023-22515

CVE-2023-22515

CVE-2023-22515(Atlassian Confluence Server 与 Data Center 中一个严重的访问控制失效漏洞)的分步利用演练,可实现远程管理员账户创建。

查看仓库
1年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2023-22515

关于 CVE-2023-22515 的主要信息

  • 受影响产品: Atlassian Confluence Data Center & Confluence Server。

  • 公开日期: 2023年10月4日。

  • 严重程度: Critical(CVSS ~ 10.0)。

  • 漏洞类型: Broken Access Control / Improper Authorization → 允许攻击者远程创建管理员账户。

  • 漏洞位于 Confluence setup 机制中。

  • 影响范围: Confluence Data Center & Server 8.0.0 → 8.5.1。

漏洞挖掘实现

  • 首先,在安装 Confluence 时,会有一个配置步骤让服务器运行,例如连接 DATABASE、创建用户等。这些操作是通过 WEB 浏览器和 URL 路径 /setup/ 完成的。配置的最后一步将是 /setup/setupadministrator.action。
  • 完成之后,这些设置将不再被调用。如果我们尝试调用它,就会显示错误消息。

1

  • 这源于 struts.xml 中名为 SetupCheckInterceptor 的拦截器之一。

    • struts.xml 是 Struts 的核心配置文件。

    • 它定义了 Confluence 如何将 URL 映射到 Action 类 → 视图模板。

    • 同时还声明了 interceptor(在 action 运行前/后拦截处理请求的类)。

1

在 SetupCheckInterceptor 中调用了 BootstrapUtils.getBootstrapManager().isSetupComplete()

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

解释

  • BootstrapUtils.getBootstrapManager().isSetupComplete()
    → 检查 Confluence 是否已完成 setup 过程(通过向导、输入许可证、创建管理员用户)。

  • ContainerManager.isContainerSetup()
    → 检查 Spring IoC 容器是否已完整初始化。

  • 如果两个条件都为真:
    → 意味着系统已完成 setup → 拦截器立即返回 "alreadysetup"。
    → 不再继续执行 action(通常是 SetupDatabaseAction、SetupLicenseAction 等 setup action)。

  • 如果尚未完成 setup:
    → 调用 actionInvocation.invoke() → 即继续执行用户请求的 action。

getBootstrapManager() → 通常返回 DefaultAtlassianBootstrapManager,它管理整个 setup 过程中的所有核心配置信息。

  • 在 DefaultAtlassianBootstrapManager.isSetupComplete 中,我们可以看到它调用了应用程序配置方法 isSetupComplete 来检查 setup 过程是否已完成。

1

=> 如果我们让 isSetupComplete = False,那么 SetupCheckInterceptor 将不会返回 “alreadysetup”,并且 /setup/setupadministrator.action 将被允许访问。

下面我们有一个 ServerInfoAction

  • ServerInfoAction = Confluence 中的公开 Action → 允许所有用户无需登录、无需 CSRF token 即可调用。运行时,它只返回 "success" → 映射到一个显示服务器信息的模板。

1

  • 它继承自 ConfluenceActionSupport
  • 在 ConfluenceActionSupport 中,我们可以看到 getBootstrapStatusProvider 返回 BootstrapStatusProviderImpl,这正是我们要查找的实例。

1

  • 在 BootstrapStatusProviderImpl 中,又有 getApplicationConfig 用于返回应用程序配置。

1

  • 最后,进入 ApplicationConfig 内部,可以看到它实现了 setSetupComplete 的检查。

1

  • 综合以上各部分,我们可以推导出一个方法调用链,将 setSetupComplete 设置为 false。
root@kitploit:~
getBootstrapStatusProvider(). getApplicationConfig (). setSetupComplete ( false );
  • XWorks2 允许我们执行这种 getter/setter 链式调用,我们可以构造一个 HTTP 参数,使用 XWorks2 要求的表示法来实现上述方法调用链。
root@kitploit:~
bootstrapStatusProvider.applicationConfig.setupComplete=false
  • 我们将利用 /server-info.action,这是 Confluence 中的一个 URL,由 ServerInfoAction 处理,因为它是不需要登录的公共端点。
root@kitploit:~
/server-info.action?bootstrapStatusProvider.applicationConfig.setupComplete=false

1

让我们检查 Debug:

  • setupComplete(传入方法的参数)
    → false
    即该方法正在以参数 false 被调用。

  • this.setupComplete(ApplicationConfig 对象的实例变量)
    → true(在赋值之前)。

  • 当命令执行完毕后 → this.setupComplete 将变为 false。

1

  • 完成上述步骤后,让我们尝试再次访问端点 /setup/setupadministrator.action,成功了。

1

  • 创建后,请登录并再次检查权限。

1

下载工具