CVE-2023-33178
Executive Summary
CVE-2023-33178 is a SQL injection vulnerability in Xibo, an open-source content management system (CMS) used for digital signage. The flaw exists in the /dataset/data/{id} API route and allows an authenticated user to exfiltrate sensitive data from the underlying Xibo database by crafting malicious values in the filter parameter. The vulnerability affects all versions from 1.4.0 through 2.3.16 (2.x branch) and through 3.3.4 (3.x branch). The vendor has released fixed versions 2.3.17 and 3.3.5, and there are no viable workarounds — upgrading is mandatory. Given the CVSS score of 6.5 and the requirement for authentication, this vulnerability is best characterized as a moderate-to-high priority data confidentiality threat for enterprise deployments of Xibo.
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.
No signup required
Technical Analysis
The vulnerability resides in the /dataset/data/{id} API endpoint within Xibo CMS. The endpoint accepts a filter parameter that is used to constrain dataset queries. The NVD description indicates that the application attempts to sanitize user input against a blocklist (deny list) of SQL commands that should not be permitted. However, the filtering logic is case-sensitive, meaning an attacker can bypass the deny list simply by using mixed or unusual case combinations in the blocked command keywords.
This class of flaw is a classic SQL injection with inadequate input sanitization (CWE-89). The attack surface is an authenticated API route, meaning the attacker must first have a valid account within the CMS. The injection point is the filter parameter, which is processed server-side as part of a SQL query against the Xibo database. Because the deny list is bypassable, the attacker can inject arbitrary SQL fragments — for example, writing UnIoN SeLeCt instead of UNION SELECT — to manipulate the query's behavior.
The technical mechanism can be summarized as follows:
- Input validation gap: The application validates the
filterparameter against a deny list of SQL keywords. The check is case-sensitive (strpos-style matching without case normalization). - Query construction: The sanitized (but not actually sanitized)
filtervalue is concatenated into a SQL statement, likely in aWHEREclause. - Injection: An attacker submits a payload using case-mixed SQL keywords that bypass the deny list, allowing the attacker to alter the query structure — for example via
UNION SELECTto append additional results, or via subqueries to extract data from other tables.
The affected versions span two major branches: all 1.x versions, all 2.x versions prior to 2.3.17, and all 3.x versions prior to 3.3.5. The impact is unilateral data confidentiality — the attacker can read the contents of the Xibo database, which may contain user credentials (hashed), API keys, configuration data, display device information, and other proprietary content.
Exploitation Scenarios
No public proof-of-concept code is available (POC_STATUS: Unknown), and the attack chain below is inferred strictly from the vulnerability class and the NVD description.
Step 1: Reconnaissance / Target Identification
An attacker first identifies an exposed Xibo CMS instance. This is typically done via internet-wide scanning for Xibo-specific banners, login pages, or default HTTP responses. Xibo CMS often runs on port 80/443 and presents a distinctive login portal. Once identified, the attacker enumerates valid user accounts — either through credential stuffing, default credentials, or social engineering. Authentication is a prerequisite due to the API route being restricted to authenticated users.
Step 2: Triggering the Flaw
The attacker authenticates to the CMS and navigates to the /dataset/data/{id} API endpoint, where {id} corresponds to an accessible dataset ID. The attacker then submits a request that includes a malicious filter parameter. Because the deny list is case-sensitive, the attacker crafts the payload using mixed-case SQL keywords — for example, UnIoN instead of UNION — to evade the blocklist.
Step 3: Payload Execution (Vulnerability-Class Level)
At the class level, the payload is a classic SQL injection that leverages a case-bypass of input filters. The attacker injects a UNION-based or boolean-based blind SQL injection payload into the filter parameter. The server concatenates this value into the SQL query without proper case-insensitive sanitization, and the database executes the attacker-controlled SQL. This permits the attacker to:
- Extract data from other tables in the database by appending
UNION SELECTclauses. - Enumerate database schema via
information_schemaqueries. - Read authentication hashes, user email addresses, or sensitive configuration data.
Step 4: Post-Exploitation Impact
Once the attacker exfiltrates data, the potential for privilege escalation increases. If user password hashes are retrieved, the attacker may crack them offline and attempt lateral movement. API tokens or administrator credentials could grant full control over the CMS, allowing modification of digital signage content (e.g., displaying malicious messages on screens), further persistence, or pivoting into the underlying server via additional vulnerabilities.
Impact Assessment
The CVSS base score is 6.5 (Medium), with a vector consistent with: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N. This indicates:
- Attack Vector (AV:N): Network-based — remotely exploitable.
- Attack Complexity (AC:L): Low — no special conditions required.
- Privileges Required (PR:L): Low — requires only an authenticated user account.
- User Interaction (UI:N): None — no user action needed.
- Scope (S:U): Unchanged — the impact is confined to the database.
- Confidentiality (C:H): High — full data confidentiality loss.
- Integrity (I:N): None.
- Availability (A:N): None.
The EPSS score of 0.00626 (46.9th percentile) suggests that exploit activity in the wild is currently unlikely but not impossible; the score reflects a moderate position in terms of likelihood of exploitation relative to other known CVEs.
Business Impact: Xibo is commonly used in retail, transportation, healthcare, and corporate environments for digital signage. A data exfiltration incident could expose:
- User credentials and password hashes — enabling credential-based attacks.
- API keys — granting access to integration points (e.g., third-party feeds, cloud services).
- Organizational content — proprietary branding assets, emergency procedures.
- Network topology details — if configuration data reveals internal hostnames or IPs.
Blast Radius: The blast radius is limited to the database contents accessible via the SQL account used by the CMS. However, in misconfigured deployments where the CMS database account has elevated database privileges (e.g., FILE or SUPER), the attacker could potentially escalate to reading server files or achieving remote code execution via INTO OUTFILE-style techniques. This is NOT confirmed for this CVE and remains speculative.
Detection Guidance
Sigma Rule
title: Xibo CMS Dataset Filter SQL Injection Attempt
id: 8a9f2b1e-6c4d-4f0a-9c2e-5d7a1b3e9f21
status: experimental
description: Detects SQL injection attempts against Xibo CMS /dataset/data/{id} endpoint via case-obfuscated SQL keywords in the filter parameter
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains:
- '/dataset/data/'
- 'filter='
cs-uri-query|contains|all:
- 'Union'
- 'Select'
condition: selection
falsepositives:
- Legitimate use of the word "union" in a dataset filter (rare)
level: high
tags:
- attack.t1190
- cve.2023-33178
- cwe.89
YARA Rule
rule Xibo_SQLi_Filter_Bypass {
meta:
author = "ValtersIT Threat Intel"
description = "Detects SQL injection payloads targeting Xibo CMS dataset filter with case obfuscation"
cve = "CVE-2023-33178"
date = "2024-01-01"
severity = "high"
strings:
$s1 = "/dataset/data/" nocase
$s2 = "UnIoN" ascii
$s3 = "SeLeCt" ascii
$s4 = "filter=1" ascii
$s5 = "information_schema" ascii
$s6 = "UniOn" ascii
$s7 = "SelEct" ascii
condition:
any of ($s1, $s4) and (any of ($s2, $s3, $s6, $s7) or all of ($s2, $s3))
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2023-33178 Xibo CMS SQL Injection via dataset filter"; flow:established,to_server; content:"/dataset/data/"; http_uri; content:"filter="; http_uri; pcre:"/[Uu][Nn][Ii][Oo][Nn].*[Ss][Ee][Ll][Ee][Cc][Tt]/i"; reference:cve,2023-33178; sid:10002317; rev:1;)
Elastic Detection (EQL)
sequence by source.ip
[http where url.path like "/dataset/data/*" and http.request.body like "*filter=*" and http.request.body like "*UnIoN*SeLeCt*"]
Note: Adjust field names (url.path, http.request.body) to match your Elastic ingest pipeline mapping.
Splunk SPL Query
index=web sourcetype=access_combined uri_path="/dataset/data/*"
| regex _raw="filter=.*(?i)(union|select|information_schema)"
| stats count by src_ip, uri, method, status
| where count > 1
| table _time, src_ip, uri, method, status, count
Wazuh OSSEC Rule
<rule id="100231" level="12">
<decoded_as>json</decoded_as>
<field name="url">/dataset/data/</field>
<regex>filter=.*</regex>
<regex>(?i)(union|select|information_schema)</regex>
<description>CVE-2023-33178: Xibo CMS SQL injection attempt detected</description>
<group>web_attack,sqli,</group>
<mitre>
<id>T1190</id>
</mitre>
</rule>
Mitigation & Patch Guidance
Patch Confidence: 3/4 (LIKELY) — Two independent sources (the CNA advisory and OSV) confirm the fix in versions 2.3.17 and 3.3.5.
1. Immediate Mitigations (Before Patching)
- Restrict API access — Limit access to the
/dataset/data/route to trusted IP ranges via firewall rules or reverse-proxy ACLs. - Disable unnecessary user accounts — Review and disable any non-essential authenticated accounts that do not explicitly require dataset access.
- Monitor access logs — Immediately review access logs for requests to
/dataset/data/containing unusual case patterns in thefilterparameter (e.g.,UnIoN,SeLeCt). - Database account hardening — If possible, ensure the CMS database user account has least-privilege permissions (no
FILE, no write access tomysqldatabase). - WAF rules — If a WAF is in place, add a custom rule to block
filterparameter values containing mixed-case SQL keywords.
2. Patch / Upgrade Steps
- Upgrade Xibo CMS to version 2.3.17 (for 2.x deployments) or 3.3.5 (for 3.x deployments).
- Review the upgrade notes in the vendor advisory for any schema migrations or additional steps.
- Test the upgraded deployment in a staging environment before production rollout.
- Verify that the
filterparameter is now correctly rejecting case-obfuscated SQL keywords post-upgrade.
3. Long-Term Hardening
- Apply the principle of least privilege to all database accounts used by the CMS.
- Keep all CMS instances updated — the vendor explicitly states there are no workarounds; this is a code-level fix.
- Use network segmentation to isolate the Xibo CMS from sensitive internal network segments.
- Enable comprehensive logging of all API interactions and integrate with centralized SIEM for real-time alerting.
- Conduct regular security audits of the CMS configuration, including user account reviews and access log analysis.
References
- NVD Entry for CVE-2023-33178 — https://nvd.nist.gov/vuln/detail/CVE-2023-33178
- Xibo Official CMS Website & Advisory — https://xibo.org.uk (vendor advisory referenced within CNA; direct advisory URL not provided in data)
- OSV.dev Entry for CVE-2023-33178 — https://osv.dev/vulnerability/CVE-2023-33178
- MITRE ATT&CK — T1190: Exploit Public-Facing Application — https://attack.mitre.org/techniques/T1190/
Threat Actor Campaigns: No known threat actor campaigns or exploit-in-the-wild evidence are documented for this CVE at the time of writing. The EPSS score (0.00626, 46.9th percentile) indicates low but non-zero exploitation likelihood. This CVE is NOT listed on the CISA Known Exploited Vulnerabilities (KEV) catalog.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.