Puppet Enterprise — CVE-2025-5459 Patch-Bypass Variant → keytool Shell Injection — Detect
| Reporter | Title | Published | Views | Family All 13 |
|---|---|---|---|---|
| CVE-2025-5459 | 26 Jun 202506:51 | – | circl | |
| Puppet Enterprise Administration Module security vulnerabilities | 26 Jun 202500:00 | – | cnnvd | |
| CVE-2025-5459 | 26 Jun 202506:30 | – | cve | |
| CVE-2025-5459 OS Command Injection | 26 Jun 202506:30 | – | cvelist | |
| CVE-2025-5459 | 26 Jun 202506:30 | – | debiancve | |
| EUVD-2025-19173 | 3 Oct 202520:07 | – | euvd | |
| Puppet Enterprise keytool shell injection root RCE | 27 Oct 202613:35 | – | kittysploit | |
| CVE-2025-5459 | 26 Jun 202507:15 | – | nvd | |
| CVE-2025-5459 | 26 Jun 202507:15 | – | osv_cve | |
| PT-2025-26943 | 26 Jun 202500:00 | – | ptsecurity |
10
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Detection for Puppet Enterprise — CVE-2025-5459 Patch-Bypass Variant → keytool Shell Injection → Root RCE"""
from kittysploit import *
from lib.protocols.http.http_client import Http_client
class Module(Scanner, Http_client):
__info__ = {
"name": "Puppet Enterprise \u2014 CVE-2025-5459 Patch-Bypass Variant \u2192 keytool Shell Injection \u2014 Detect",
"description": "Fingerprint / reachability check for Puppet Enterprise \u2014 CVE-2025-5459 Patch-Bypass Variant \u2192 keytool Shell Injection \u2192 Root RCE",
"author": ["KittySploit Team"],
"severity": "high",
"tags": ["scanner", "web", "puppet"],
"references": [],
"agent": {
"risk": "active",
"effects": ["network_probe"],
"expected_requests": 2,
"reversible": True,
"approval_required": False,
"produces": ["tech_hints", "risk_signals"],
"chain": {
"suggested_followups": ["exploits/multi/http/puppet_keytool_injection_root_rce"],
},
},
}
port = OptPort(443, "Service port", required=False)
def run(self):
resp = self.http_request("GET", "/", allow_redirects=True)
if not resp:
return False
body = (resp.text or "").lower()
hints = ["puppet", "keytool"]
if any(h and h.lower() in body for h in hints if isinstance(h, str)):
self.set_info(
severity="high",
reason="Target fingerprint matches puppet advisory surface",
confidence="medium",
)
return True
code = int(getattr(resp, "status_code", 0) or 0)
if code and code < 500:
self.set_info(
severity="medium",
reason="HTTP service reachable — run matching exploit module for validation",
confidence="low",
)
return True
return False
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
27 Oct 2026 13:35Current
6.1Medium risk
Vulners AI Score6.1
CVSS 3.18.8
CVSS 48.6
EPSS0.01098
SSVC