9001 - Pentesting HSQLDB
Grundlegende Informationen
HSQLDB (HyperSQL-Datenbank) ist das führende SQL-Relationssystem, das in Java geschrieben ist. Es bietet eine kleine, schnelle, mehrfädige und transaktionale Datenbank-Engine mit Speichertabellen und tabellenbasierten Tabellen und unterstützt eingebettete und Servermodi.
Standardport: 9001
Informationen
Standardkonfiguration
Beachten Sie, dass dieser Dienst standardmäßig wahrscheinlich im Speicher ausgeführt wird oder an localhost gebunden ist. Wenn Sie ihn gefunden haben, haben Sie wahrscheinlich einen anderen Dienst ausgenutzt und suchen nach Möglichkeiten, Privilegien zu eskalieren.
Standardmäßige Anmeldeinformationen sind normalerweise sa
mit einem leeren Passwort.
Wenn Sie einen anderen Dienst ausgenutzt haben, suchen Sie nach möglichen Anmeldeinformationen unter Verwendung von
Beachten Sie den Datenbanknamen sorgfältig - Sie benötigen ihn, um eine Verbindung herzustellen.
Informationsbeschaffung
Stellen Sie eine Verbindung zur DB-Instanz her, indem Sie HSQLDB herunterladen und hsqldb/lib/hsqldb.jar
extrahieren. Führen Sie die GUI-Anwendung (eww) mit java -jar hsqldb.jar
aus und stellen Sie eine Verbindung zur Instanz unter Verwendung der entdeckten/schwachen Anmeldeinformationen her.
Beachten Sie, dass die Verbindungs-URL für ein Remote-System wie folgt aussehen wird: jdbc:hsqldb:hsql://ip/DBNAME
.
Tricks
Java Language Routines
Wir können statische Methoden einer Java-Klasse von HSQLDB aus mit Java Language Routines aufrufen. Beachten Sie, dass die aufgerufene Klasse im Klassenpfad der Anwendung vorhanden sein muss.
JRTs können Funktionen
oder Prozeduren
sein. Funktionen können über SQL-Anweisungen aufgerufen werden, wenn die Java-Methode eine oder mehrere SQL-kompatible primitive Variablen zurückgibt. Sie werden mit der VALUES
-Anweisung aufgerufen.
Wenn die Java-Methode, die wir aufrufen möchten, void zurückgibt, müssen wir eine Prozedur verwenden, die mit der CALL
-Anweisung aufgerufen wird.
Lesen von Java-Systemeigenschaften
Funktion erstellen:
Die folgende Funktion ausführen:
Sie können eine Liste der Systemeigenschaften hier finden.
Inhalt in Datei schreiben
Sie können das Java-Gadget com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename
verwenden, das sich im JDK befindet (automatisch in den Klassenpfad der Anwendung geladen wird), um hex-codierte Elemente über einen benutzerdefinierten Vorgang auf die Festplatte zu schreiben. Beachten Sie die maximale Größe von 1024 Bytes.
Erstellen Sie den Vorgang:
Führe das Verfahren aus:
Last updated