
CVE-2025-54424 CVE-2025-54424:1Panel 客户端证书绕过RCE漏洞 一体化工具 (扫描+利用) 漏洞简介 1Panel 是一个开源、现代化的 Linux 运维管理面板,提供图形化界面用于部署网站、管理服务器和运行服务。 受影响版本中,Agent 端 TLS 认证策略为 tls.RequireAnyClientCert,仅要求提供证书但不验证其可信性。攻击者可通过自签名证书绕过 TLS 校验,并伪造CN字段为panel_client,绕过应用层校验。最终攻击者可伪造证书进行未授权命令执行接口调用,导致远程命令执行漏洞。 影响版本 cert.subject_org=="FIT2CLOUD"&&ip.port="9999” || cert.subject.suffix=="panel_server" cert.subject.org="FIT2CLOUD" && port="9999" && protocol="tls" || cert.subject.cn="panel_server" 漏洞分析 copy GitHub漏洞通告部分 首先引入1panel v2 Core端与Agent端的概念,新版本发布后,1panel增加了节点管理的功能,可以通过添加节点来控制其他的主机。 而Core端与Agent端通讯所使用的https协议,在证书校验中未完全校验证书的真实性导致接口未授权。1panel中由于存在大量命令执行或高权限的接口,导致RCE。 代码审计过程 首先我们进入到Agent HTTP路由文件agent/init/router/router.go 发现Routers函数中引用Certificate函数进行了全局校验agent/middleware/certificate.go 发现Certificate函数判断了c.Request.TLS.HandshakeComplete是否进行了证书通讯 由于c.Request.TLS.HandshakeComplete的真假判断是通过agent/server/server.go代码Start函数中的tls.RequireAnyClientCert来判断的 注:此处由于使用tls.RequireAnyClientCert而不是tls.RequireAndVerifyClientCert,RequireAnyClientCert只要求客户端提供证书,不验证证书的签发CA,所以任何自签名证书都能通过TLS握手。 后续进入Certificate函数中的其他判断,只验证了证书CN字段为panel_client,未验证证书签发者。最后发现WebSocket连接可以绕过Proxy-ID验证。 项目中存在大量的websocket接口。 Process WebSocket 接口(根据上述问题可获取所有的进程等敏感信息) 路由地址: /process/ws 请求格式如下 { "type": "ps", // 数据类型: ps(进程), ssh(SSH会话), net(网络连接), wget(下载进度) "pid": 123, // 可选,指定进程ID进行筛选 "name": "process_name", // 可选,根据进程名筛选 "username": "user" // 可选,根据用户名筛选 } Terminal SSH WebSocket…Read More
References
Back to Main