ZephrFish/CVE-2025-53770-Scanner
GitHub: ZephrFish/CVE-2025-53770-Scanner
针对 SharePoint CVE-2025-53770 漏洞的自动化检测扫描器,帮助企业快速识别存在风险和已被利用的 SharePoint 实例。
Stars: 18 | Forks: 5
# CVE-2025-53770 SharePoint 漏洞扫描器
本项目是针对目前推特上流传的各种攻击载荷和攻击手法进行 100% 拼凑而成的工具,因此不提供任何形式的保证。该扫描器旨在识别易受攻击的实例,并内置了包含已知实际攻击利用场景的配置,其主要设计初衷是为防御目的服务,帮助您识别存在漏洞的实例以便进行修补。
该扫描器通过以下方式对 SharePoint 部署执行自动化检测:
- 向 SharePoint ToolPane 端点发送带有恶意载荷的自定义 POST 请求
- 检测机器密钥提取企图及成功的利用行为
- 识别二次载荷部署(spinstall0.aspx)
- 基于观察到的攻击模式分析响应中的漏洞特征
- 提供包含置信度级别和紧急行动警报的详细报告
- 支持并发扫描以提高效率
## 核心检测能力
### 严重:机器密钥提取检测
- 检测成功的机器密钥提取响应
- 识别 ValidationKey、DecryptionKey 和 CompatibilityMode 泄露
- 识别管道符分隔的机器密钥模式 (ValidationKey|Validation|DecryptionKey|Decryption|CompatibilityMode)
- 针对已遭破坏的系统触发紧急行动警报
### 二次载荷检测
- 识别 spinstall0.aspx 部署企图
- 检测 C# ASP.NET 载荷代码模式
- 识别 System.Web.Configuration.MachineKeySection 的使用
- 基于版本的路径检测 (`SP2013: WEBSER~1\15\ vs SP2016+: WEBSER~1\16\`)
## 安装说明
1. 克隆代码库:
```
git clone https://github.com/ZephrFish/CVE-2025-53770-Scanner
cd CVE-2025-53770-Scanner
```
2. 安装依赖项:
```
pip install -r requirements.txt
```
## 用法
### 基本用法
创建一个包含目标主机的文本文件(每行一个):
```
sharepoint1.example.com
sharepoint2.example.net
internal-sp.company.local
```
运行扫描器:
```
python3 scanner.py -i hosts.txt
python3 scanner.py -i hosts.txt -o results.json -l scan.log -t 20 -v
```
### 命令行选项
| 选项 | 描述 | 默认值 |
|--------|-------------|---------|
| `-i, --input` | 主机列表文件路径(必填) | - |
| `-o, --output` | 结果输出文件(.json、.csv、.txt) | None |
| `-l, --logfile` | 用于记录详细日志的文件路径 | None |
| `-t, --threads` | 并发线程数 | 10 |
| `-v, --verbose` | 启用详细输出和日志记录 | False |
### 输出格式
#### JSON 输出 (`-o results.json`)
```
[
{
"host": "sharepoint.example.com",
"url": "https://sharepoint.example.com/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx",
"scan_time": "2025-07-21T10:30:00.123456",
"vulnerable": true,
"status_code": 200,
"response_size": 15432,
"error": null,
"response_time": 1.23
}
]
```
#### CSV 输出 (`-o results.csv`)
提供适合电子表格分析的表格数据,包含所有扫描指标的列。
#### 文本输出 (`-o results.txt`)
人类可读的格式,包含漏洞状态和扫描详情。
## 漏洞详情
**CVE-2025-53770** 针对 SharePoint 的 ExcelDataSet 组件中的一个反序列化漏洞,该漏洞目前已在实际环境中遭到积极利用。扫描器可检测:
### 已识别的攻击模式
1. **初始利用**:向 `/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx` 发送带有序列化载荷的 POST 请求
2. **机器密钥提取**:成功的利用会返回管道符分隔的机器配置信息:
ValidationKey|Validation|DecryptionKey|Decryption|CompatibilityMode
示例:[128-256 个十六进制字符]|HMACSHA256|[48-96 个十六进制字符]|AES|Framework45
3. **二次载荷**:部署 `spinstall0.aspx` 以实现持久化访问和密钥提取
4. **版本针对性**:针对不同 SharePoint 版本使用不同路径(15/ 与 16/ 布局)
### 实际攻击确认的 IOC
- **User-Agent**:`Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0`
- **Referer**:`/_layouts/SignOut.aspx`
- **Content-Length**:通常为 7699-8000+ 字节
- **载荷大小**:大型的 base64 编码 CompressedDataTable 参数
- **响应指标**:机器密钥字符串、spinstall0.aspx 部署
- **攻击基础设施**:65.38.121.198, 162.243.204.189, 165.22.18.129
### 检测逻辑
扫描器会分析以下响应特征:
1. 机器密钥提取模式(严重置信度)
2. 二次载荷指标(高置信度)
3. ExcelDataSet/Scorecard 组件处理(中置信度)
4. ToolPane 错误模式及异常响应特征(低置信度)
## 安全注意事项
- 本工具仅专为**授权的安全测试**设计
- 在扫描任何系统之前,请确保已获得正当授权
- 扫描器默认使用 HTTPS,但接受自签名证书
- 日志可能包含敏感信息——需妥善保管
- 使用高线程数时请注意评估网络影响
## 扫描会话示例
```
$ python3 scanner.py -i corporate-sharepoint.txt -o vuln-results.json -l scan.log -v
Starting scan of 150 hosts with 10 threads...
Target CVE: CVE-2025-53770 (SharePoint ExcelDataSet deserialization)
Logging to: scan.log
Results will be saved to: vuln-results.json
[+] VULNERABLE [CRITICAL]: sp-prod-01.acme.local
[-] Not vulnerable: sp-dev-02.acme.local
[!] ERROR: offline-sp.acme.local - Connection timeout
[+] VULNERABLE [HIGH]: sp-legacy.acme.local
Progress: 50/150 (33.3%)
Progress: 100/150 (66.7%)
Progress: 150/150 (100.0%)
============================================================
SCAN COMPLETE
============================================================
Total hosts scanned: 150
Vulnerable hosts: 3
Success rate: 97.3%
VULNERABLE HOSTS (CVE-2025-53770):
CRITICAL - MACHINE KEY EXTRACTED (1 hosts):
• sp-prod-01.acme.local (Response time: 0.85s, Version: 2016+)
WARNING: IMMEDIATE ACTION REQUIRED: Machine keys compromised
HIGH CONFIDENCE (1 hosts):
• sp-legacy.acme.local (Response time: 1.23s, Version: 2013-2016)
LOW CONFIDENCE (1 hosts):
• sp-archive.acme.local (Response time: 2.10s, Version: Unknown)
Detailed results saved to: vuln-results.json
```
## 故障排除
### 常见问题
1. **连接超时**:增加超时时间或减少线程数
2. **SSL 错误**:扫描器默认禁用 SSL 警告
3. **权限错误**:确保对输出/日志文件具有写入权限
4. **内存使用**:在处理大量主机列表时请注意监控内存
### 日志分析
启用详细日志记录 (`-v`) 和日志文件 (`-l`) 以进行详细的故障排除:
```
tail -f scan.log
```
## 利用分析
### 观察到的攻击载荷
扫描器包含对实际攻击中观察到的已确认利用模式的检测:
#### 主要载荷结构
```
POST /_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx HTTP/1.1
Host: target.domain.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0
Content-Length: 7699
Content-Type: application/x-www-form-urlencoded
Referer: /_layouts/SignOut.aspx
Connection: close
MSOTlPn_Uri=http%3A%2F%2F{{host}}%2F_controltemplates%2F15%2FAclEditor.ascx
&MSOTlPn_DWP=[ExcelDataSet payload with CompressedDataTable containing serialized exploit]
```
#### 二次载荷 (spinstall0.aspx)
```
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>
```
#### 预期的机器密钥响应格式
```
ValidationKey: [128-256 character hex string]
Validation: HMACSHA256|HMACSHA1|SHA1
DecryptionKey: [48-96 character hex string]
Decryption: AES|DES|3DES
CompatibilityMode: Framework20SP1|Framework45|Framework40
```
## 检测和监控指南
### 检测 CVE-2025-53770 利用企图
组织应实施以下检测机制来识别潜在的利用企图:
#### 1. Web 应用防火墙 (WAF) 规则
监控发往 SharePoint ToolPane 端点的可疑 POST 请求:
```
# 示例 WAF 检测规则模式
POST /_layouts/15/ToolPane.aspx*
POST /_layouts/*/ToolPane.aspx*
Query string: "DisplayMode=Edit&a=/ToolPane.aspx"
Request body containing: "MSOTlPn_Uri", "MSOTlPn_DWP"
Request body containing: "ExcelDataSet", "CompressedDataTable"
Request body containing: "Scorecard:ExcelDataSet"
Request body containing: "H4sIAAAAAAAEA" (gzip magic bytes in base64)
Content-Length > 5000 bytes (typical payload size)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0)
Referer: /_layouts/SignOut.aspx
```
**观察到的利用模式:**
- 载荷大小通常为 7000-8000+ 字节
- `CompressedDataTable` 参数中包含 URL 编码的压缩数据
- 特定的 User-Agent 字符串:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0)
- Content-Type:application/x-www-form-urlencoded
- 经常出现 Connection: close 标头
- 载荷中包含 base64 编码的序列化 .NET 对象
- 响应包含管道符分隔格式的机器密钥
- 发往已部署 spinstall0.aspx 文件的二次请求
#### 2. SharePoint ULS 日志
监控 SharePoint 统一日志记录服务 (ULS) 日志以查看:
```
Category: SharePoint Foundation Web Controls
Level: Unexpected, Error, Critical
Keywords: "ToolPane", "ExcelDataSet", "Deserialization"
Process: w3wp.exe
```
ULS 日志中的关键指标:
- ToolPane.aspx 处理过程中出现意外异常
- Microsoft.PerformancePoint 组件中出现反序列化错误
- w3wp.exe 中出现内存损坏或进程崩溃
#### 3. IIS 访问日志
监控 IIS 日志中的利用模式:
```
# 日志分析查询(替换为你的 SIEM 语法)
cs-method="POST" AND cs-uri-stem="/_layouts/15/ToolPane.aspx"
cs-method="POST" AND cs-uri-query="DisplayMode=Edit&a=/ToolPane.aspx"
cs-bytes > 7000 (typical exploit payload size)
cs(User-Agent)="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0"
cs(Referer)="/_layouts/SignOut.aspx"
sc-status=200 AND time-taken > 5000 (slow processing indicating deserialization)
```
**真实攻击中的特定 IOC:**
```
POST /_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx
Content-Length: 7699
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0
Referer: /_layouts/SignOut.aspx
Body contains: MSOTlPn_Uri=http%3A%2F%2F[domain]%2F_controltemplates%2F15%2FAclEditor.ascx
Body contains: CompressedDataTable%3D%22H4sIAAAAAAAEANVa23LbSJLt3stEzMzu0%2F6AQs%2B2BJCiu%2BWQ
```
#### 4. 网络流量分析
监控网络流量以查看:
- 发往 SharePoint 服务器的异常大小的 POST 请求
- 来自单一来源的对 ToolPane.aspx 的重复请求
- HTTP POST 正文中包含 base64 编码的载荷
- 针对 SharePoint 的非浏览器 User-Agent 字符串
#### 5. Windows 事件日志
监控 SharePoint 服务器上的 Windows 事件日志:
```
Event Log: Application
Source: ASP.NET, SharePoint Foundation
Event IDs: 1309, 1310 (application errors)
Event Log: System
Source: Application Error
Process: w3wp.exe crashes
```
#### 6. SIEM 检测规则
##### Splunk 检测查询:
```
index=iis source="*iis*"
| search cs_method="POST" cs_uri_stem="/_layouts/15/ToolPane.aspx" cs_uri_query="DisplayMode=Edit&a=/ToolPane.aspx"
| eval payload_size=tonumber(cs_bytes)
| where payload_size > 7000
| search cs_User_Agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0"
| stats count by src_ip, cs_uri_stem, payload_size
| sort -payload_size
```
##### 针对真实攻击的增强检测:
```
index=iis
| search cs_method="POST" AND cs_uri_stem="/_layouts/15/ToolPane.aspx"
| where cs_bytes > 7000 AND cs_bytes < 10000
| search cs_Referer="/_layouts/SignOut.aspx"
| eval attack_pattern=if(like(cs_User_Agent, "%Windows NT 10.0; Win64; x64; rv:120.0%"), "CVE-2025-53770", "Other")
| where attack_pattern="CVE-2025-53770"
| table _time, src_ip, cs_uri_query, cs_bytes, sc_status
```
##### Elastic/Kibana 查询:
```
{
"query": {
"bool": {
"must": [
{"term": {"http.request.method": "POST"}},
{"term": {"url.path": "/_layouts/15/ToolPane.aspx"}},
{"term": {"url.query": "DisplayMode=Edit&a=/ToolPane.aspx"}},
{"range": {"http.request.bytes": {"gte": 7000, "lte": 10000}}},
{"term": {"user_agent.original": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0"}},
{"term": {"http.request.referrer": "/_layouts/SignOut.aspx"}}
]
}
}
}
```
##### CVE-2025-53770 的 Sigma 规则:
```
title: CVE-2025-53770 SharePoint ExcelDataSet Exploitation
id: cve-2025-53770-sharepoint-exploit
description: Detects exploitation attempts of CVE-2025-53770 SharePoint deserialization vulnerability
references:
- https://github.com/your-repo/CVE-2025-53770-Scanner
author: Security Team
date: 2025/07/21
logsource:
category: webserver
product: iis
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/_layouts/15/ToolPane.aspx'
cs-uri-query: 'DisplayMode=Edit&a=/ToolPane.aspx'
cs-bytes:
- gte: 7000
- lte: 10000
cs-User-Agent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0'
cs-Referer: '/_layouts/SignOut.aspx'
condition: selection
falsepositives:
- Legitimate SharePoint administrative activities
level: high
tags:
- attack.initial_access
- attack.t1190
- cve.2025.53770
```
#### 7. 行为指标
留意以下攻击后行为:
- 来自 SharePoint 服务器的异常出站网络连接
- 在 SharePoint 或 Active Directory 中创建的新用户账户
- 未经授权的文件上传或修改
- 权限提升企图
- 向其他系统的横向移动
### 建议的响应措施
1. **紧急响应:**
- 在防火墙/WAF 处拦截可疑的源 IP
- 若确认遭到利用,请隔离受影响的 SharePoint 服务器
- 保留日志和内存转储以进行取证分析
2. **调查:**
- 分析 POST 请求载荷中是否包含恶意内容
- 检查是否存在成功执行代码的指标
- 审查用户账户活动和权限更改
- 与其他安全事件进行关联分析
3. **遏制:**
- 立即应用安全补丁
- 实施 WAF 规则以阻断利用企图
- 将 SharePoint 服务器与关键网络资源进行安全隔离
### SIEM 集成示例
#### 将扫描结果导入 Splunk:
```
# 转换扫描结果以供 Splunk 摄取
python3 scanner.py -i hosts.txt -o results.json
# 导入到 Splunk 索引
curl -k -H "Authorization: Splunk " -X POST \
"https://splunk-server:8088/services/collector" \
-d @results.json
```
标签:CISA项目, Python, SharePoint, 加密, 库, 应急响应, 无后门, 漏洞扫描器, 逆向工具