HexBrain

Browse / CVEs / CVE-2021-29484

CVE-2021-29484· ghost / ghost· CWE-79

Ghost CMS <=4.32 - Cross-Site Scripting

mediumseverity
6.8CVSS score
7.9%likelihood of exploitation, next 30 days
95%of all CVEs are less likely
Readycheck to confirm it

Ghost CMS 4.0.0 to 4.3.2 contains a DOM cross-site scripting vulnerability. An unused endpoint added during the development of 4.0.0 allows attackers to gain access by getting logged-in users to click a link containing malicious code.

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 potential data theft, session hijacking, or defacement of the affected website.

Fix

This issue has been fixed in 4.3.3.

How to confirm it

Send: GET {{BaseURL}}/ghost/preview
Positive when: contains "XMLHttpRequest.prototype.open = XMLHttpRequest.prototype.se…" and "top.postMessage(" AND contains in header "text/html" AND status 200

Run it with nuclei: nuclei -id CVE-2021-29484 -u <target>. This check is not marked as verified by its authors.

The full check
id: CVE-2021-29484

info:
  name: Ghost CMS <=4.32 - Cross-Site Scripting
  author: rootxharsh,iamnoooob
  severity: medium
  description: Ghost CMS 4.0.0 to 4.3.2 contains a DOM cross-site scripting vulnerability. An unused endpoint added during the development of 4.0.0 allows attackers to gain access by getting logged-in users to click a link containing malicious code.
  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 potential data theft, session hijacking, or defacement of the affected website.
  remediation: This issue has been fixed in 4.3.3.
  reference:
    - https://github.com/TryGhost/Ghost/security/advisories/GHSA-9fgx-q25h-jxrg
    - https://www.npmjs.com/package/ghost
    - https://forum.ghost.org/t/critical-security-update-available-for-ghost-4-x/22290
    - https://nvd.nist.gov/vuln/detail/CVE-2021-29484
    - https://github.com/ARPSyndicate/cvemon
    - https://github.com/TryGhost/Ghost/blob/95651b33a66f3240535a61999b292a725f1b3317/core/server/web/admin/views/preview.html
    - https://www.sonarsource.com/blog/ghost-admin-takeover/
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N
    cvss-score: 6.8
    cve-id: CVE-2021-29484
    cwe-id: CWE-79
    epss-score: 0.07935
    epss-percentile: 0.94778
    cpe: cpe:2.3:a:ghost:ghost:*:*:*:*:*:node.js:*:*
  metadata:
    max-request: 1
    vendor: ghost
    product: ghost
    framework: node.js
    shodan-query: http.component:"ghost"
  tags: cve2021,cve,xss,ghost,node.js,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/ghost/preview"

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - 'XMLHttpRequest.prototype.open = XMLHttpRequest.prototype.send'
          - 'top.postMessage('
        condition: and

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

      - type: status
        status:
          - 200

References

Use this check only on systems you are authorised to test. Where the data comes from