2024-02-09 12:54:39 +00:00
# 9200 - Elasticsearchのペンテスト
2022-04-28 16:01:33 +00:00
< details >
2024-02-09 12:54:39 +00:00
< summary > < strong > htARTE( HackTricks AWS Red Team Expert) < / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > でAWSハッキングをゼロからヒーローまで学ぶ< / strong > < / a > < strong > ! < / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-09 12:54:39 +00:00
HackTricksをサポートする他の方法:
2022-04-28 16:01:33 +00:00
2024-02-09 12:54:39 +00:00
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](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/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 >
2023-07-07 23:42:27 +00:00
## 基本情報
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
Elasticsearchは、**分散型**、**オープンソース**の検索および分析エンジンで、**あらゆる種類のデータ**に対応しています。**速度**、**拡張性**、および**シンプルなREST API**で知られています。Apache Lucene上に構築され、2010年にElasticsearch N.V.( 現在はElasticとして知られています) によって最初にリリースされました。ElasticsearchはElastic Stackの中核コンポーネントであり、データの取り込み、拡張、保存、分析、可視化のためのオープンソースツールのコレクションです。このスタックは一般的にELKスタックと呼ばれ、LogstashとKibanaも含まれており、Beatsと呼ばれる軽量データ転送エージェントも含まれています。
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
### Elasticsearchインデックスとは?
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
Elasticsearchの**インデックス**は、**JSON**として保存された**関連するドキュメント**のコレクションです。各ドキュメントは、**キー**とそれに対応する**値**(文字列、数値、ブール値、日付、配列、地理位置など)で構成されています。
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
Elasticsearchは、高速な全文検索を可能にする効率的なデータ構造である**転置インデックス**を使用しています。このインデックスは、ドキュメント内のすべての一意の単語をリストし、各単語が現れるドキュメントを特定します。
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
インデックス作成プロセス中、Elasticsearchはドキュメントを保存し、転置インデックスを構築し、リアルタイムに検索を可能にします。**インデックスAPI**は、特定のインデックス内にJSONドキュメントを追加または更新するために使用されます。
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
**デフォルトポート**: 9200/tcp
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
## 手動列挙
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### バナー
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
Elasticsearchにアクセスするために使用されるプロトコルは**HTTP**です。HTTP経由でアクセスすると、いくつかの興味深い情報が表示されます: `http://10.10.10.115:9200/`
2020-07-15 15:43:14 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . gitbook / assets / image ( 264 ) . png > )
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
`/` にアクセスしてもこの応答が表示されない場合は、次のセクションを参照してください。
2020-07-17 23:09:57 +00:00
2023-07-07 23:42:27 +00:00
### 認証
2020-07-17 23:09:57 +00:00
2024-02-09 12:54:39 +00:00
**デフォルトではElasticsearchには認証が有効になっていません**ので、デフォルトでは資格情報を使用せずにデータベース内のすべてにアクセスできます。
2021-01-28 13:40:17 +00:00
2024-02-09 12:54:39 +00:00
認証が無効になっていることを確認するには、以下のリクエストを使用してください:
2021-01-28 13:40:17 +00:00
```bash
curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user"
{"error":{"root_cause":[{"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."}],"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."},"status":500}
```
2024-02-09 12:54:39 +00:00
**しかしながら**、`/` にリクエストを送信し、以下のようなレスポンスを受け取った場合:
2020-07-17 23:09:57 +00:00
```bash
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}
```
2024-02-09 12:54:39 +00:00
それは認証が設定されており、**有効な資格情報**が必要です。Elasticsearchから情報を取得するには、[**ブルートフォース攻撃を試みる**](../generic-methodologies-and-resources/brute-force.md#elasticsearch)必要があります( HTTPベーシック認証を使用しているため、HTTPベーシック認証をブルートフォース攻撃することができます) 。\
ここには、**デフォルトのユーザー名のリスト**があります: _**elastic** (スーパーユーザー), remote\_monitoring\_user, beats\_system, logstash\_system, kibana, kibana\_system, apm\_system,_ \_anonymous\_.\_ Elasticsearchの古いバージョンでは、このユーザーのデフォルトパスワードは **changeme** です。
2021-10-18 11:21:18 +00:00
```
2020-10-05 11:46:57 +00:00
curl -X GET http://user:password@IP:9200/
```
2023-07-07 23:42:27 +00:00
### 基本的なユーザー列挙
2021-01-28 13:40:17 +00:00
```bash
#List all roles on the system:
curl -X GET "ELASTICSEARCH-SERVER:9200/_security/role"
#List all users on the system:
curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user"
#Get more information about the rights of an user:
curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user/< USERNAME > "
```
2024-02-09 12:54:39 +00:00
### Elastic Info
2021-01-28 13:40:17 +00:00
2024-02-09 12:54:39 +00:00
以下は、Elasticsearchに関する情報を取得するために**GET経由でアクセス**できるいくつかのエンドポイントです:
2021-11-30 16:46:07 +00:00
| \_cat | /\_cluster | /\_security |
| ------------------------------- | ----------------------------- | ------------------------- |
| /\_cat/segments | /\_cluster/allocation/explain | /\_security/user |
| /\_cat/shards | /\_cluster/settings | /\_security/privilege |
| /\_cat/repositories | /\_cluster/health | /\_security/role\_mapping |
| /\_cat/recovery | /\_cluster/state | /\_security/role |
| /\_cat/plugins | /\_cluster/stats | /\_security/api\_key |
| /\_cat/pending\_tasks | /\_cluster/pending\_tasks | |
| /\_cat/nodes | /\_nodes | |
| /\_cat/tasks | /\_nodes/usage | |
| /\_cat/templates | /\_nodes/hot\_threads | |
| /\_cat/thread\_pool | /\_nodes/stats | |
| /\_cat/ml/trained\_models | /\_tasks | |
| /\_cat/transforms/\_all | /\_remote/info | |
| /\_cat/aliases | | |
| /\_cat/allocation | | |
| /\_cat/ml/anomaly\_detectors | | |
| /\_cat/count | | |
| /\_cat/ml/data\_frame/analytics | | |
| /\_cat/ml/datafeeds | | |
| /\_cat/fielddata | | |
| /\_cat/health | | |
| /\_cat/indices | | |
| /\_cat/master | | |
| /\_cat/nodeattrs | | |
| /\_cat/nodes | | |
2021-10-18 11:21:18 +00:00
2024-02-09 12:54:39 +00:00
これらのエンドポイントは、[**ドキュメントから取得**](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html)され、そこでさらに多くの情報を見つけることができます。\
また、`/_cat`にアクセスすると、インスタンスでサポートされている`/_cat/*`エンドポイントが含まれるレスポンスが返されます。
2020-07-17 23:09:57 +00:00
2024-02-09 12:54:39 +00:00
`/_security/user` (認証が有効な場合)では、どのユーザーが`superuser`の役割を持っているかを確認できます。
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
### Indices
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
`http://10.10.10.115:9200/_cat/indices?v` にアクセスすることで、すべてのインデックスを**収集**できます。
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .kibana 6tjAYZrgQ5CwwR0g6VOoRg 1 0 1 0 4kb 4kb
yellow open quotes ZG2D1IqkQNiNZmi2HRImnQ 5 1 253 0 262.7kb 262.7kb
yellow open bank eSVpNfCfREyYoVigNWcrMw 5 1 1000 0 483.2kb 483.2kb
```
2024-02-09 12:54:39 +00:00
**インデックス内に保存されているデータの種類に関する情報**を取得するには、次のようにアクセスできます:`http://host:9200/< index > ` 例えば、この場合は `http://10.10.10.115:9200/bank`
2020-07-15 15:43:14 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . gitbook / assets / image ( 265 ) . png > )
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### インデックスのダンプ
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
インデックスの**すべての内容をダンプ**したい場合は、`http://host:9200/< index > /_search?pretty=true` にアクセスできます。例えば `http://10.10.10.115:9200/bank/_search?pretty=true`
2020-07-15 15:43:14 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . gitbook / assets / image ( 266 ) . png > )
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
_銀行インデックス内の各ドキュメント( エントリ) の内容と、前のセクションで見たこのインデックスのフィールドを比較する時間を取ってください。_
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
したがって、この時点で、**"hits"内に"total"というフィールドがある**ことに気付くかもしれません。これは、このインデックス内で**1000件のドキュメントが見つかった**ことを示していますが、取得されたのは10件だけです。これは**デフォルトで10件の制限がある**ためです。\
しかし、今、**このインデックスに1000件のドキュメントが含まれている**ことを知っているので、**`size`**パラメータでダンプするエントリ数を指定して、**すべてのエントリをダンプ**することができます:`http://10.10.10.115:9200/quotes/_search?pretty=true& size=1000`\
_注: より大きな数値を指定すると、すべてのエントリが無条件にダンプされます。たとえば、`size=9999`と指定することもできますが、それ以上のエントリがある場合は奇妙になります( 確認する必要があります) 。_
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
### すべてのダンプ
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
すべてをダンプするには、**以前と同じパスに移動して、インデックスを指定しない**でアクセスできます `http://host:9200/_search?pretty=true` 例えば `http://10.10.10.115:9200/_search?pretty=true` \
この場合は、**デフォルトの10件の制限**が適用されます。より多くの結果をダンプするには、`size`パラメータを使用できます。詳細については前のセクションを参照してください。
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### 検索
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
情報を検索する場合は、`http://host:9200/_search?pretty=true& q=< search_term > ` に移動して、**すべてのインデックスで生の検索**を行うことができます。例えば `http://10.10.10.115:9200/_search?pretty=true&q=Rockwell`
2020-07-15 15:43:14 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . gitbook / assets / image ( 267 ) . png > )
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
**インデックス内で検索**したい場合は、**パス**でそれを**指定**するだけです:`http://host:9200/< index > /_search?pretty=true& q=< search_term > `
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
_qパラメータを使用してコンテンツを検索する際には、**正規表現がサポート**されていることに注意してください。_
2020-07-27 15:27:48 +00:00
2024-02-09 12:54:39 +00:00
また、[https://github.com/misalabs/horuz](https://github.com/misalabs/horuz)のようなものを使用して、Elasticsearchサービスをファジングすることもできます。
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### 書き込み権限
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
新しいインデックス内に新しいドキュメントを作成しようとして、書き込み権限を確認することができます。
2020-07-15 15:43:14 +00:00
```bash
curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/json' -d'
2023-07-07 23:42:27 +00:00
{
"bookId" : "A00-3",
"author" : "Sankaran",
"publisher" : "Mcgrahill",
"name" : "how to get a job"
}'
2020-07-15 15:43:14 +00:00
```
2024-02-09 12:54:39 +00:00
そのコマンドは、タイプが`books`で、属性が"_bookId_"、"_author_"、"_publisher_"、"_name_"であるドキュメントを持つ`bookindex`という**新しいインデックス**を作成します。
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
**新しいインデックスがリストに表示**される方法に注目してください:
2020-07-15 15:43:14 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . gitbook / assets / image ( 268 ) . png > )
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
そして、**自動的に作成されたプロパティ**に注目してください:
2020-07-15 15:43:14 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . gitbook / assets / image ( 269 ) . png > )
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
## 自動列挙
2020-07-17 14:32:55 +00:00
2024-02-09 12:54:39 +00:00
一部のツールは、以前に表示されたデータの一部を取得します。
2020-07-17 14:32:55 +00:00
```bash
msf > use auxiliary/scanner/elasticsearch/indices_enum
```
2020-10-05 10:44:06 +00:00
{% embed url="https://github.com/theMiddleBlue/nmap-elasticsearch-nse" %}
2022-05-01 13:25:53 +00:00
## Shodan
2020-10-05 10:44:06 +00:00
* `port:9200 elasticsearch`
2022-04-28 16:01:33 +00:00
< details >
2024-02-09 12:54:39 +00:00
< summary > < strong > ゼロからヒーローまでのAWSハッキングを学ぶ< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE( HackTricks AWS Red Team Expert) < / strong > < / a > < strong > ! < / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-09 12:54:39 +00:00
HackTricksをサポートする他の方法:
2022-04-28 16:01:33 +00:00
2024-02-09 12:54:39 +00:00
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](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/hacktricks_live )を**フォロー**する。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
2022-04-28 16:01:33 +00:00
< / details >