CVE-2023-32315从未授权到RCE复现分析

admin 2023年6月30日14:53:57评论208 views字数 1859阅读6分11秒阅读模式
CVE-2023-32315从未授权到RCE复现分析

01

简介

Openfire是一个开源的实时协作(RTC)服务器,采用开源Apache许可证。它是一个即时通讯(IM)和群聊服务器,使用Java编写并使用XMPP协议。它非常易于设置和管理,但提供了坚实的安全性和性能。

02

影响版本

3.10.0<= Openfire <4.6.8

4.7.0<=Openfire <4.7.5

选择搭建的版本为4.7.4,windos下搭建省心省力,下载链接:

https://github.com/igniterealtime/Openfire/releases/download/v4.7.4/openfire_4_7_4_x64.exe

03

环境搭建

CVE-2023-32315从未授权到RCE复现分析

一直下一步。

CVE-2023-32315从未授权到RCE复现分析

前提是环境已经安装过jdk。

CVE-2023-32315从未授权到RCE复现分析
CVE-2023-32315从未授权到RCE复现分析

启动服务端,访问管理界面进行配置。

CVE-2023-32315从未授权到RCE复现分析
http://192.168.95.130:9090/setup/index.jsp
CVE-2023-32315从未授权到RCE复现分析

掠过其它步骤,数据库无需配置,配置管理账户。

CVE-2023-32315从未授权到RCE复现分析
CVE-2023-32315从未授权到RCE复现分析

04

漏洞复现

漏洞url:
http://192.168.95.130:9090/setup/setup-s/%u002e%u002e/%u002e%u002e/log.jsp
CVE-2023-32315从未授权到RCE复现分析

泄露日志文件,payload如下:

/setup/setup-s/%u002e%u002e/%u002e%u002e/*.jsp

05

漏洞分析

查看配置文件xmppserver/src/main/webapp/WEB-INF/web.xm
<filter-mapping>        <filter-name>AuthCheck</filter-name>        <url-pattern>*.jsp</url-pattern>    </filter-mapping>            <filter>        <filter-name>AuthCheck</filter-name>        <filter-class>org.jivesoftware.admin.AuthCheckFilter</filter-class>        <init-param>            <param-name>excludes</param-name>            <param-value>                login.jsp,index.jsp?logout=true,setup/index.jsp,setup/setup-*,.gif,.png,error-serverdown.jsp,loginToken.jsp            </param-value>        </init-param>    </filter>

查看源文件该配置文件已经修改了,但是查看最新版本和4.7.4的文件对比发现该部分内容如上。

CVE-2023-32315从未授权到RCE复现分析
xmppserver/src/main/java/org/jivesoftware/admin/AuthCheckFilter.java
public static boolean testURLPassesExclude(String url, String exclude) {        if (exclude.endsWith("*")) {            if (url.startsWith(exclude.substring(0, exclude.length()-1))) {                // Now make sure that there are no ".." characters in the rest of the URL.                if (!url.contains("..") && !url.toLowerCase().contains("%2e")) {                    return true;                }            }

该代码部分导致了漏洞的产生,当url中含有setup的路径的时候满足第一个if语句,当满payload中含有../../的时候满足第二个if条件,当../../做uft-8编码的时候绕过了第三个if条件导致了bypass,所以在修复的代码中对于用户认证这部分增加utf8的解码以及在web.xml中对exclude的值做了修改。

同样4.7.5中已经修改。

CVE-2023-32315从未授权到RCE复现分析

06

创建用户

通过未授权进行命令执行,可以直接使用编译好的工具获取admin用户组的用户密码登录。

CVE-2023-32315从未授权到RCE复现分析

图片来自于github,工具我没有测试,有兴趣的可以参考。

https://github.com/tangxiaofeng7/CVE-2023-32315-Openfire-Bypass

这个用户身份bypass详细有的师傅能发现跟之前某大厂OA基本一样。

07

命令执行

根据创建的用户登录之后上传webshell,从上面的地址上传别人封装好的jar包,插件位置上传jar包。

CVE-2023-32315从未授权到RCE复现分析

上传成功

CVE-2023-32315从未授权到RCE复现分析

执行命令

CVE-2023-32315从未授权到RCE复现分析
CVE-2023-32315从未授权到RCE复现分析

原文始发于微信公众号(火线Zone):CVE-2023-32315从未授权到RCE复现分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月30日14:53:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2023-32315从未授权到RCE复现分析http://cn-sec.com/archives/1846202.html

发表评论

匿名网友 填写信息