Confluence 利用指南

发布于 2024-08-16 19:23:31 字数 10412 浏览 64 评论 0

0x00 前言

Confluence 是一个专业的企业知识管理与协同软件,也可以用于构建企业 wiki。

前不久爆出了漏洞 CVE-2021-26084 - Confluence Server Webwork OGNL injection ,本文仅在技术研究的角度介绍 Confluence 的相关知识。

0x01 简介

  • Confluence 环境搭建
  • 利用思路

0x02 Confluence 环境搭建

环境搭建的参考资料:

本文以 Centos7 搭建 Confluence 为例进行介绍

1.配置数据库

这里选择 PostgreSQL,安装的参考资料:https://confluence.atlassian.com/doc/database-setup-for-postgresql-173244522.html

(1) 安装 PostgreSQL

访问地址: https://www.postgresql.org/download/linux/redhat/

获得安装命令,如下图

Alt text

安装完成后查看运行状态:

systemctl status postgresql-13

(2) 配置 PostgreSQL

设置允许其他程序访问数据库:修改 /var/lib/pgsql/13/data/pg_hba.conf,将 METHOD 改为 trust ,设置如下图

Alt text

重启 PostgreSQL:

systemctl restart postgresql-13

补充:配置允许其他 IP 访问数据库

修改 /var/lib/pgsql/13/data/pg_hba.conf

ADDRESS 改为 0.0.0.0/0 ,如下图

Alt text

修改 /var/lib/pgsql/13/data/postgresql.conf,设置 listen_addresses = '*' ,如下图

Alt text

重启 PostgreSQL:

systemctl restart postgresql-13

(3) 数据库操作

PostgreSQL 安装完成后会在本地操作系统创建一个名为 postgres 的用户,默认没有口令

切换到用户 postgres:

su postgres

进入 postgreSQL:

bash-4.2$ psql

设置用户 postgres 的口令:

postgres=# \password postgres

查看创建用户的命令说明:

postgres-# \h create user

如下图

Alt text

创建用户 confluence:

postgres-# create user confluenceuser with password 'confluenceuser' createdb login;

参数说明:

  • createdb:具有创建数据库的权限
  • login:具有登录权限

创建数据库 confluence:

postgres-# create database confluence with owner=confluenceuser encoding='UTF8';

参数说明:

  • encoding:指定 encoding 必须为 utf8

测试用户登录:

[user@localhost ~]$ psql -h localhost -p 5432 -d confluence -U confluenceuser

2.安装 Confluence

下载地址: https://www.atlassian.com/software/confluence/download-archives

选择一个版本 7.11.3

下载时选择 7.11.3 - Linux Installer (64 bit) ,如下图

Alt text

执行安装命令:

[root@localhost ~]$ ./atlassian-confluence-7.11.3-x64.bin

在安装过程中,选择 Express Install (uses default settings) [1] ,如下图

Alt text

安装结束后,使用浏览器访问 http://localhost:8090

在设置 Confluence 页面,需要填入 license,可以通过访问 https://my.atlassian.com/license/evaluation 获得,如下图

Alt text

进入数据库设置页面,配置如下图

Alt text

接下来,依次设置 content、manage users 和 administrator account 页面

最后的成功页面如下图

Alt text

访问登录页面: http://localhost:8090/welcome.action,如下图

Alt text

3.创建 Confluence 普通用户

使用管理员帐户登录后,选择 Use management 进行用户配置,如下图

Alt text

添加用户 test1,配置如下图

Alt text

注:

管理员帐户对应以下两个组:

  • confluence-administrators
  • confluence-users

添加用户后,可访问 http://localhost:8090/进行登录

0x03 基础知识

1.文件目录

参考资料:

https://www.cwiki.us/display/CONF6ZH/Confluence+Home+and+other+important+directories

(1) <confluence-installation>

安装目录,用于存储系统文件

默认安装位置:

  • Windows: C:/Program Files/Atlassian/Confluence/
  • Linux: /opt/atlassian/confluence/

(2) <confluence-home>

数据目录,用于存储数据

默认安装位置:

  • Windows: C:/Program Files/Atlassian/Application Data/Confluence/
  • Linux: /var/atlassian/application-data/confluence/

二者之间的联系:

<confluence-installation>/confluence/WEB-INF/classes/confluence-init.properties 文件中定义了 <confluence-home> 的位置

2.数据库信息

存储数据库配置信息的位置: <confluence-home>/confluence.cfg.xml

3.用户信息

用户信息位于 Confluence 的数据库中

存储用户信息的表: CWD_USER ,具体列名称如下:

  • user_name:用户名
  • active:是否启用
  • email_address:邮件地址
  • credential:用户凭据
  • directory_id:用户组,代表用户的权限

directory_id 对应的具体用户组名称可通过以下方式查看:

  • 查询表 cwd_group 中的 group_name 列,管理员用户组的值为 confluence-administrators
  • 查询表 cwd_directory 中的 directory_name 列,管理员用户组的值为 Confluence Internal Directory

直接筛选出管理员用户的 SQL 命令:

confluence=> select u.id,u.user_name,u.active,u.credential from cwd_user u  join cwd_membership m on u.id=m.child_user_id join cwd_group g on m.parent_id=g.id join cwd_directory d on d.id=g.directory_id where g.group_name = 'confluence-administrators' and d.directory_name='Confluence Internal Directory';

执行结果如下图

Alt text

4.日志文件位置

<confluence-home>/logs/

5.Web 路径

<confluence-installation>/confluence/

  • Windows:Confluence 默认权限为 network service,具有写权限
  • Linux:Confluence 默认权限为 confluence,没有写权限

0x04 利用思路

1.修改数据库,实现用户登录

(1) 修改用户登录口令

利用实例:查看用户关键信息,命令如下:

confluence=> select id,user_name,credential from cwd_user;

执行结果如下图

Alt text

修改用户 test2 的口令信息,命令如下:

confluence=> UPDATE cwd_user SET credential= '{PKCS5S2}UokaJs5wj02LBUJABpGmkxvCX0q+IbTdaUfxy1M9tVOeI38j95MRrVxWjNCu6gsm' WHERE id = 458755;

确认数据库被修改,如下图

Alt text

注:{PKCS5S2}UokaJs5wj02LBUJABpGmkxvCX0q+IbTdaUfxy1M9tVOeI38j95MRrVxWjNCu6gsm 对应的明文为 123456

(2) 修改 Personal Access Tokens

使用 Personal Access Tokens 可以实现免密登录

介绍资料:https://confluence.atlassian.com/bitbucketserver0610/personal-access-tokens-989761177.html https://developer.atlassian.com/server/confluence/confluence-server-rest-api/ https://docs.atlassian.com/ConfluenceServer/rest/7.11.6/

利用实例:测试环境下, Personal Access Tokens 对应表为 AO_81F455_PERSONAL_TOKEN

查询语句:

confluence=> select * from "AO_81F455_PERSONAL_TOKEN";

修改 Personal Access Tokens,命令如下:

confluence=> UPDATE "AO_81F455_PERSONAL_TOKEN" SET "HASHED_TOKEN"= '{PKCS5S2}Deoq/psifhVO0VE8qhJ6prfgOltOdJkeRH4cIxac9NtoXVodRQJciR95GW37gR7/' WHERE "ID" = 4;

注:{PKCS5S2}Deoq/psifhVO0VE8qhJ6prfgOltOdJkeRH4cIxac9NtoXVodRQJciR95GW37gR7/ 对应的 token 为 MjE0NTg4NjQ3MTk2OrQ5JtSJgT/rrRBmCY4zu+N+NaWZ

2.写文件

Web 路径: <confluence-installation>/confluence/

  • Windows: Confluence 默认权限为 network service,具有写权限
  • Linux: Confluence 默认权限为 confluence,没有写权限,但可以尝试内存马

0x05 小结

本文介绍了 Confluence 在利用上的相关基础知识。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

文章
评论
84965 人气
更多

推荐作者

佚名

文章 0 评论 0

今天

文章 0 评论 0

゛时过境迁

文章 0 评论 0

达拉崩吧

文章 0 评论 0

呆萌少年

文章 0 评论 0

孤者何惧

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文