CVE-2020-16846: SaltStack <=3002 - Shell Injection

日期: 2025-08-01 | 影响软件: SaltStack | POC: 已公开

漏洞描述

SaltStack Salt through 3002 allows an unauthenticated user with network access to the Salt API to use shell injections to run code on the Salt-API using the SSH client.

PoC代码[已公开]

id: CVE-2020-16846

info:
  name: SaltStack <=3002 - Shell Injection
  author: dwisiswant0
  severity: critical
  description: |
    SaltStack Salt through 3002 allows an unauthenticated user with network access to the Salt API to use shell injections to run code on the Salt-API using the SSH client.
  remediation: |
    Upgrade to a patched version of SaltStack (>=3003) to mitigate this vulnerability.
  reference:
    - https://saltproject.io/on-november-3-2020-saltstack-publicly-disclosed-three-new-cves/
    - https://mp.weixin.qq.com/s/R8qw_lWizGyeJS0jOcYXag
    - https://github.com/vulhub/vulhub/tree/master/saltstack/CVE-2020-16846
    - https://nvd.nist.gov/vuln/detail/CVE-2020-16846
    - http://lists.opensuse.org/opensuse-security-announce/2020-11/msg00029.html
  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-16846
    cwe-id: CWE-78
    epss-score: 0.94387
    epss-percentile: 0.99968
    cpe: cpe:2.3:a:saltstack:salt:*:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    vendor: saltstack
    product: salt
  tags: cve2020,cve,vulhub,saltstack,kev
variables:
  priv: "{{to_lower(rand_text_alpha(5))}}"
  roaster: "{{to_lower(rand_text_alpha(6))}}"

http:
  - method: POST
    path:
      - "{{BaseURL}}/run"

    body: "token=1337&client=ssh&tgt=*&fun=a&roster={{roaster}}&ssh_priv={{priv}}"

    headers:
      Content-Type: application/x-www-form-urlencoded # CherryPy will abort w/o define this header

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - regex("CherryPy\/([0-9.]+)", header) || regex("CherryPy ([0-9.]+)", body)

      - type: word
        part: body
        words:
          - "An unexpected error occurred"

      - type: word
        part: header
        words:
          - "application/json"

      - type: status
        status:
          - 500
# digest: 4b0a00483046022100b527428e1e3a36c73437c92ec1b7cc8d7dc53c3f625b46f3501c57477f3b47b1022100fc433bcd2b3963cf75732afa17066641a474c3965e356ea041a755ba3c347972:922c64590222798bb761d5b6d8e72950

相关漏洞推荐