9001 - Pentesting HSQLDB
Informações Básicas
HSQLDB (HyperSQL DataBase) é o principal sistema de banco de dados relacional SQL escrito em Java. Oferece um mecanismo de banco de dados pequeno, rápido, multithread e transacional com tabelas em memória e baseadas em disco, e suporta modos embutido e servidor.
Porta padrão: 9001
Informação
Configurações Padrão
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 elevar privilégios.
As credenciais padrão geralmente são sa
com uma senha em branco.
Se você explorou outro serviço, procure por possíveis credenciais usando
Observe cuidadosamente o nome do banco de dados - você precisará dele para se conectar.
Coleta de Informações
Conecte-se à instância do banco de dados baixando o 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/frágeis.
Observe que a URL de conexão terá uma aparência semelhante a esta para um sistema remoto: jdbc:hsqldb:hsql://ip/DBNAME
.
Truques
Rotinas de Linguagem Java
Podemos chamar métodos estáticos de uma classe Java a partir do HSQLDB usando Rotinas de Linguagem Java. Observe que a classe chamada precisa estar no classpath da aplicação.
As JRTs podem ser funções
ou procedimentos
. As funções podem ser chamadas por meio de instruções SQL se o método Java retornar uma ou mais variáveis primitivas 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 um procedimento invocado com a instrução CALL
.
Lendo Propriedades do Sistema Java
Criar função:
Executar função:
Pode encontrar uma lista de propriedades do sistema aqui.
Escrever Conteúdo para Arquivo
Pode usar o gadget Java com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename
localizado no JDK (carregado automaticamente no classpath da aplicação) para escrever itens codificados em hexadecimal no disco através de um procedimento personalizado. Observe o tamanho máximo de 1024 bytes.
Criar procedimento:
Executar procedimento:
Last updated