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
环境搭建
一直下一步。
前提是环境已经安装过jdk。
启动服务端,访问管理界面进行配置。
http://192.168.95.130:9090/setup/index.jsp
掠过其它步骤,数据库无需配置,配置管理账户。
04
漏洞复现
漏洞url:
http://192.168.95.130:9090/setup/setup-s/%u002e%u002e/%u002e%u002e/log.jsp
泄露日志文件,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的文件对比发现该部分内容如上。
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中已经修改。
06
创建用户
通过未授权进行命令执行,可以直接使用编译好的工具获取admin用户组的用户密码登录。
图片来自于github,工具我没有测试,有兴趣的可以参考。
https://github.com/tangxiaofeng7/CVE-2023-32315-Openfire-Bypass
这个用户身份bypass详细有的师傅能发现跟之前某大厂OA基本一样。
07
命令执行
根据创建的用户登录之后上传webshell,从上面的地址上传别人封装好的jar包,插件位置上传jar包。
上传成功
执行命令
往期推荐
火线Zone是火线安全平台运营的安全社区,拥有超过20,000名可信白帽安全专家,内容涵盖渗透测试、红蓝对抗、漏洞分析、代码审计、漏洞复现等热门主题,旨在研究讨论实战攻防技术,助力社区安全专家技术成长,2年内已贡献1300+原创攻防内容,提交了100,000+原创安全漏洞。
欢迎具备分享和探索精神的你加入火线Zone社区,一起分享技术干货,共建一个有技术氛围的优质安全社区!
原文始发于微信公众号(火线Zone):CVE-2023-32315从未授权到RCE复现分析