Maison  >  Article  >  Opération et maintenance  >  Comment reproduire la vulnérabilité RCE d'accès non autorisé à l'interface API XXL-JOB

Comment reproduire la vulnérabilité RCE d'accès non autorisé à l'interface API XXL-JOB

WBOY
WBOYavant
2023-05-12 09:37:055126parcourir

XXL-JOB Description

XXL-JOB est une plate-forme légère de planification de tâches distribuées. Ses principaux objectifs de conception sont un développement rapide, un apprentissage facile, une légèreté et une expansion facile. Le code source est désormais ouvert et connecté aux gammes de produits en ligne de nombreuses entreprises, prêt à être utilisé immédiatement.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

1. Détails de la vulnérabilité

Le problème principal de cette vulnérabilité est le mode GLUE. XXL-JOB prend en charge les tâches multi-langues et script via le « mode GLUE ». Les fonctionnalités des tâches de ce mode sont les suivantes :

Quantity Support multi-langues : prend en charge Java, Shell, Python, NodeJS, PHP, PowerShell... et d'autres types.

Quantity Web IDE : les tâches sont conservées dans le centre de répartition sous forme de code source et prennent en charge le développement et la maintenance en ligne via Web IDE.

Quantity Validation dynamique : le code de tâche développé par l'utilisateur en ligne via l'IDE Web est poussé vers l'exécuteur à distance et chargé en temps réel pour exécution.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Comme le montre l'image ci-dessus, si le code d'attaque est écrit dans le code de tâche du mode GLUE et transmis à l'exécuteur pour exécution, il peut provoquer des attaques à distance.

【Description de la vulnérabilité】

L'interface API Restful ou l'interface RPC de XXL-JOB n'est pas configurée avec des mesures d'authentification. Des attaquants non autorisés peuvent créer des requêtes malveillantes et provoquer l'exécution de commandes à distance

【Évaluation de la vulnérabilité】

Risque élevé.

【Version concernée】

XXL-JOB <= 2.2.0

2. Configuration de l'environnement

Idée générale : téléchargement du code source->Dépendances d'installation de Maven->Configurer le déploiement "Scheduling Center" »->Configurer et déployer le « projet exécuteur »->Déploiement complet

Environnement de développement local : Java8+Maven3.6

1 Code source de téléchargement Github

Adresse : https://github.com/xuxueli/xxl. -job/releases/tag/v2.2.0

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

2. Maven télécharge les dépendances requises

Idea ouvre le code source décompressé et installe automatiquement les dépendances pertinentes dans le pom, qui peut également être utilisé dans le terminal. La commande maven télécharge les dépendances requises

3. Configuration de la base de données

L'emplacement du script SQL d'initialisation de la base de données est :

/xxl-job/doc/db/tables_xxl_job.sql

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Parce que MySQL n'est pas installé localement. , Par conséquent, utilisez docker pour installer.

a) docker pull mysql:5.7

b) sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

De cette façon, nous démarrons le conteneur mysql, le compte est root , le mot de passe est root Utilisez navicat pour vous connecter à la base de données pour 123456

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Vous pouvez cliquer sur le coin inférieur gauche pour terminer le test de connexion. Cliquez avec le bouton droit sur la base de données importée, sélectionnez Exécuter le fichier SQL et cliquez sur Démarrer pour terminer l'importation de la base de données.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

4. Configurer et déployer le "Scheduling Center"

Projet de centre de planification : xxl-job-admin

Fonction : Unifier la gestion des tâches de planification sur la plateforme de planification des tâches, être responsable du déclenchement de l'exécution de la planification , et fournir une plateforme de gestion des tâches. Vous pouvez modifier la configuration de la base de données dans application.properties en fonction de la situation réelle

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Exécuter XxlJobAdminApplication pour démarrer le centre de répartition

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Nous utilisons le Springboot recommandé pour gérer l'exécuteur

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Affichez le fichier de configuration et recherchez xxl. Paramètres job.executor.logpath, nous pouvons créer ou modifier le chemin pour éviter des problèmes d'exécution du programme. Le chemin des données n'existe pas dans le nouveau système Mac. Il a été constaté que l'utilisation de mkdir pour créer le chemin a échoué, car Sip est désactivé dans le système Mac. Utilisez sudo mount -uw / pour supprimer les restrictions Sip. Exécutez XxlJobExecutorApplication pour démarrer l'exécuteur. Ouvrez //localhost:8080/ dans le navigateur et consultez l'interface de connexion. Assurez-vous que le démarrage est réussi. Le compte de connexion par défaut est "admin/123456"

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Remarque :

Il est recommandé de créer /data/. applogs/xxl-job d'abord, programme Ce chemin est utilisé dans de nombreux fichiers de configuration

Modifier la configuration de la base de données du centre de répartition

Linux/Unix peut utiliser lsof pour vérifier l'occupation du port afin d'éviter un échec de démarrage

Le centre de répartition et l'exécuteur peuvent être déployés séparément selon la situation réelle

3. Récurrence de la vulnérabilité

Vous pouvez voir en consultant le document officiel Description de l'interface de la tâche de déclenchement dans l'exécuteur API RESTful

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Les modes d'exécution de la tâche sont les suivants

如何进行XXL-JOB API接口未授权访问RCE漏洞复现View GulueTypeEnum code source

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Nous utilisons donc Burpsuite pour construire notre POC

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Conseils :

#🎜 🎜#Lors de la modification de GlueSource, Si l'exécution ne prend pas effet, veuillez modifier le jobId

Lors du redémarrage du projet, vous constatez que le démarrage du port est anormal, veuillez fermer BurpSuite

#🎜🎜 #Étant donné que la version officielle de XXL-JOB est livrée avec son propre composant d'authentification, lorsqu'il est activé, il peut assurer la sécurité de la communication sous-jacente du système. L'auteur de XXL-JOB a déclaré que dans des circonstances normales, la communication sous-jacente entre le centre de répartition et l'exécuteur testamentaire est sécurisée et qu'il n'y a aucune vulnérabilité de commande à distance. Cependant, si le jeton d'accès n'est pas activé sur l'exécuteur, les demandes de planification illégales ne peuvent pas être identifiées et interceptées. Les demandeurs malveillants peuvent utiliser le mode GLUE pour pousser du code d'attaque malveillant afin de réaliser des attaques à distance. Par conséquent, l'auteur de XXL-JOB estime que ce problème n'est pas une « vulnérabilité » par nature. La version officielle du site Web fournit un composant d'authentification, qui peut être activé à des fins de protection.

4. Suggestions de réparation

1. Activez le composant d'authentification fourni avec XXL-JOB : recherchez "xxl.job. accessToken ", activez-le simplement selon la documentation.

2. Restriction d'accès au port : En configurant un groupe de sécurité, seules les IP spécifiées peuvent accéder au port

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