Я пытаюсь получить доступ к методу deserialize stati c в классе hsqldb (2.5.1) InOutUtil. Когда я запускаю его java -cp hsqldb.jar:. testcode
, я получаю:
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: org.hsqldb.lib.InOutUtil.deserialize
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source)
at testcode.main(testcode.java:58)
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: org.hsqldb.lib.InOutUtil.deserialize
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.result.Result.getException(Unknown Source)
... 4 more
Код:
...
connection = DriverManager.getConnection(dburl, "sa", "");
statement = connection.createStatement();
statement.execute("call \"java.lang.System.setProperty\"('org.apache.commons.collections.enableUnsafeSerialization','true')");
statement.execute("call \"org.hsqldb.lib.InOutUtil.deserialize\"('" + my_object +"');");
...
Это оскорбительная строка, которая вызывает исключение:
statement.execute("call \"org.hsqldb.lib.InOutUtil.deserialize\"('" + my_object +"');");
Я пытаюсь воспроизвести этот эксплойт https://github.com/Critical-Start/Team-Ares/tree/master/CVE-2020-5902 на локальном экземпляре hsqldb.
Не уверен, что Я делаю не так. Спасибо!