Heim >Betrieb und Instandhaltung >Sicherheit >So reproduzieren Sie die RCE-Schwachstelle des unbefugten Zugriffs auf die XXL-JOB-API-Schnittstelle

So reproduzieren Sie die RCE-Schwachstelle des unbefugten Zugriffs auf die XXL-JOB-API-Schnittstelle

WBOY
WBOYnach vorne
2023-05-12 09:37:055210Durchsuche

XXL-JOB-Beschreibung

XXL-JOB ist eine leichtgewichtige verteilte Aufgabenplanungsplattform. Seine zentralen Designziele sind schnelle Entwicklung, einfaches Lernen, geringes Gewicht und einfache Erweiterung. Der Quellcode ist jetzt offen und mit den Online-Produktlinien vieler Unternehmen verbunden und sofort einsatzbereit.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

1. Details zur Sicherheitslücke

Das Kernproblem dieser Sicherheitslücke ist der GLUE-Modus. XXL-JOB unterstützt Mehrsprachen- und Skriptaufgaben durch den „GLUE-Modus“. Die Aufgabenfunktionen dieses Modus sind wie folgt:

● Mehrsprachenunterstützung: unterstützt Java, Shell, Python, NodeJS, PHP, PowerShell... und andere Arten.

● Web-IDE: Aufgaben werden im Versandzentrum in Quellcodeform verwaltet und Online-Entwicklung und -Wartung werden durch Web-IDE unterstützt.

● Dynamische Validierung: Der vom Benutzer online über die Web-IDE entwickelte Aufgabencode wird remote an den Executor übertragen und in Echtzeit zur Ausführung geladen.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Wie im Bild oben gezeigt, kann es zu Remote-Angriffen kommen, wenn Angriffscode im GLUE-Modus-Aufgabencode geschrieben und zur Ausführung an den Executor weitergeleitet wird.

【Schwachstellenbeschreibung】

Die Restful API-Schnittstelle oder RPC-Schnittstelle von XXL-JOB ist nicht mit Authentifizierungsmaßnahmen konfiguriert. Unbefugte Angreifer können bösartige Anfragen erstellen und die Remoteausführung von Befehlen verursachen.

【Schwachstellenbewertung】

Hohes Risiko „Betroffene Version“: ”->„Executor-Projekt“ konfigurieren und bereitstellen->Bereitstellung abschließen

Lokale Entwicklungsumgebung: Java8+Maven3.61. Github-Download-Quellcode

Adresse: https://github.com/xuxueli/xxl -job/releases/tag/v2.2.0

2. Maven lädt die erforderlichen Abhängigkeiten herunter

Idea öffnet den dekomprimierten Quellcode und installiert automatisch die relevanten Abhängigkeiten im POM, die auch im Terminal verwendet werden können Der Maven-Befehl lädt die erforderlichen Abhängigkeiten herunter

3. Datenbankkonfiguration

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Der Speicherort des SQL-Skripts für die Planung der Datenbankinitialisierung lautet:

/xxl-job/doc/db/tables_xxl_job.sql

Da MySQL nicht lokal installiert ist Verwenden Sie daher zur Installation Docker.

a) docker pull mysql:5.7

b) sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Auf diese Weise starten wir den MySQL-Container, das Konto ist root , das Passwort ist root. Verwenden Sie Navicat, um eine Verbindung zur Datenbank für 123456 herzustellen.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Sie können auf die untere linke Ecke klicken, um die Testverbindung abzuschließen. Klicken Sie mit der rechten Maustaste auf die importierte Datenbank, wählen Sie „SQL-Datei ausführen“ und klicken Sie auf „Start“, um den Datenbankimport abzuschließen.

4. Konfigurieren und implementieren Sie das „Scheduling Center“

Scheduling Center-Projekt: xxl-job-admin

Funktion: Vereinheitlichen Sie die Verwaltung von Planungsaufgaben auf der Aufgabenplanungsplattform und übernehmen Sie die Verantwortung für die Auslösung der Planungsausführung und stellen eine Aufgabenverwaltungsplattform bereit. Sie können die Datenbankkonfiguration in application.properties entsprechend der tatsächlichen Situation ändern.如何进行XXL-JOB API接口未授权访问RCE漏洞复现

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Führen Sie job.executor.logpath Parameter: Wir können den Pfad erstellen oder ändern, um Probleme bei der Programmausführung zu verhindern. Der Datenpfad ist im neuen Mac-System nicht vorhanden. Es wurde festgestellt, dass die Verwendung von mkdir zum Erstellen des Pfads fehlgeschlagen ist. Dies liegt daran, dass Sip im Mac-System deaktiviert ist. Führen Sie XxlJobExecutorApplication aus, um den Executor zu starten. Öffnen Sie //localhost:8080/ im Browser und sehen Sie sich die Anmeldeschnittstelle an. Das Standard-Anmeldekonto ist „admin/123456“. Hinweis:

Es wird empfohlen, /data/ zu erstellen. applogs/xxl-job zuerst, Programm Dieser Pfad wird in vielen Konfigurationsdateien verwendet

Ändern Sie die Konfiguration der Dispatch-Center-Datenbank

Linux/Unix kann lsof verwenden, um die Portbelegung zu überprüfen, um Startfehler zu verhindern

Das Dispatch-Center und der Executor können entsprechend der tatsächlichen Situation separat bereitgestellt werden

3. Wiederholung der Sicherheitslücke

Sehen Sie sich die offizielle Dokumentation an und Sie können die Beschreibung der Trigger-Task-Schnittstelle in der Executor-RESTful-API sehen.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Die Die Aufgabenausführungsmodi sind wie folgt:

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Sehen Sie sich den GulueTypeEnum-Quellcode an

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Also verwenden wir Burpsuite, um unseren POC zu erstellen

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Tipps:

Wenn Sie bei der Änderung von GlueSource die Ausführung nicht wirksam werden, ändern Sie bitte die Job-ID

Beim Neustart des Projekts wird festgestellt, dass die Port-Start-Ausnahme vorliegt. Bitte schließen Sie BurpSuite.

Da die offizielle Version von XXL-JOB über native Authentifizierungskomponenten verfügt, kann beim Einschalten die Sicherheit der zugrunde liegenden Kommunikation des Systems gewährleistet werden . Der Autor von XXL-JOB gab an, dass unter normalen Umständen die zugrunde liegende Kommunikation zwischen dem Versandzentrum und dem Ausführenden sicher ist und keine Sicherheitslücke bei Remote-Befehlen besteht. Wenn das Zugriffstoken jedoch nicht auf dem Executor aktiviert ist, können illegale Planungsanforderungen nicht identifiziert und abgefangen werden. Böswillige Anforderer können den GLUE-Modus verwenden, um böswilligen Angriffscode zu pushen, um Remoteangriffe durchzuführen. Daher glaubt der Autor von XXL-JOB, dass es sich bei diesem Problem nicht um eine „Sicherheitslücke“ handelt. Die offizielle Website-Version bietet eine Authentifizierungskomponente, die zum Schutz aktiviert werden kann.

Vier. Reparaturvorschläge

1. Aktivieren Sie die mit XXL-JOB gelieferte Authentifizierungskomponente: Suchen Sie in der offiziellen Dokumentation nach „xxl.job.accessToken“ und aktivieren Sie sie gemäß den Dokumentationsanweisungen.

2. Portzugriffsbeschränkungen: Durch die Konfiguration von Sicherheitsgruppenbeschränkungen können nur bestimmte IPs auf die Ports zugreifen

Das obige ist der detaillierte Inhalt vonSo reproduzieren Sie die RCE-Schwachstelle des unbefugten Zugriffs auf die XXL-JOB-API-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen