https://su18.org/post/jdbc-connection-url-attack/
JDBC 通过 URL/URI 连接指定的数据库,URL 由三个部分组成:driver name, 地址,以及 参数。其中 autoDeserialize 参数会让 JDBC 客户端自动反序列化服务端返回的数据(执 行 getObject 方法)
比如, mysql-connector-java 8.0.14
中的 ResultSetImpl 类实现了
java.sql.ResultSet 并且重写了 getObject 方法,当设置了 autoDeserialize 参数就反
序列化服务端返回的数据并且执行 readObject
但是默认情况下 JDBC 不会执行 getObject 方法,研究人员发现了一条利用链可以利用 ServerStatusDiffInterceptor 执行 getObject 方法: