9001 - Pentesting HSQLDB
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
HSQLDB (HyperSQL DataBase) é o principal sistema de banco de dados relacional SQL escrito em Java. Ele oferece um mecanismo de banco de dados pequeno, rápido, multithreaded e transacional com tabelas em memória e baseadas em disco, e suporta modos embutidos e de servidor.
Porta padrão: 9001
Observe que, por padrão, este serviço provavelmente está sendo executado na memória ou está vinculado ao localhost. Se você o encontrou, provavelmente explorou outro serviço e está procurando escalar privilégios.
As credenciais padrão geralmente são sa
com uma senha em branco.
Se você explorou outro serviço, procure possíveis credenciais usando
Note o nome do banco de dados com atenção - você precisará dele para se conectar.
Conecte-se à instância do DB baixando HSQLDB e extraindo hsqldb/lib/hsqldb.jar
. Execute o aplicativo GUI (eww) usando java -jar hsqldb.jar
e conecte-se à instância usando as credenciais descobertas/fracas.
Note que a URL de conexão parecerá algo assim para um sistema remoto: jdbc:hsqldb:hsql://ip/DBNAME
.
Podemos chamar métodos estáticos de uma classe Java a partir do HSQLDB usando Java Language Routines. Observe que a classe chamada precisa estar no classpath da aplicação.
JRTs podem ser functions
ou procedures
. Funções podem ser chamadas via instruções SQL se o método Java retornar uma ou mais variáveis primárias compatíveis com SQL. Elas são invocadas usando a instrução VALUES
.
Se o método Java que queremos chamar retornar void, precisamos usar uma procedure invocada com a instrução CALL
.
Crie a função:
Executar função:
Você pode encontrar uma lista de propriedades do sistema aqui.
Você pode usar o com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename
gadget Java localizado no JDK (carregado automaticamente no class path da aplicação) para escrever itens codificados em hex no disco através de um procedimento personalizado. Observe o tamanho máximo de 1024 bytes.
Criar procedimento:
Executar procedimento:
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)