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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cakephp-cookie-suffix — CakePHP 5.4.2 - 높음 - 원격 - 쿠키 - Http Client 쿠키 저장소가 도메인을 정규식 접미사로 매칭 | Kitploit
도구/GitHubGitHub/abraxas/cakephp-cookie-suffix
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringWeb SecurityPapers & Research
GitHubabraxas/cakephp-cookie-suffix

cakephp-cookie-suffix

CakePHP 5.4.2 - 높음 - 원격 - 쿠키 - Http Client 쿠키 저장소가 도메인을 정규식 접미사로 매칭

저장소 보기
73일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - cakephp-cookie-suffix

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  cakephp-cookie-suffix

cakephp-cookie-suffix

분류: 쿠키 유출 / 심기 도달 범위: 원격

CakePHP 5.4.2 (887b641) - Cake Software Foundation

CookieCollection::findMatchingCookies는 preg_match('/' . preg_quote($domain) . '$/', $host)를 사용합니다. 이는 문자열 접미사 검사이지 RFC 6265 도메인 매칭이 아닙니다. api.partner.com에 대한 쿠키가 evilapi.partner.com으로 전송됩니다. bank.com에 대한 쿠키가 notbank.com으로 전송됩니다.

Cookie::createFromHeaderString()은 또한 응답 호스트에 대한 검사 없이 Set-Cookie의 Domain=을 복사합니다. attacker.test에서 Domain=victim.internal과 함께 addFromResponse를 호출하면 해당 쿠키가 저장되고 나중에 victim.internal에 첨부됩니다.

여러 호스트에 걸쳐 기본 jar와 함께 Cake\Http\Client를 사용하는 앱은 파트너 세션 쿠키를 접미사 혼동 형제 호스트로 유출하거나, 공격자 URL을 가져온 후 내부 호스트에 쿠키를 심을 수 있습니다. other.com은 매칭되지 않습니다. 이는 브라우저 쿠키 버그가 아닙니다. 기본 cakephp/app은 스스로 두 번째 호스트를 호출하지 않습니다.

ID아직 CVE 없음
분류쿠키 유출 / 심기 (정규식 접미사 도메인 매칭)
도달 범위원격 (앱이 호스트 전반에 걸쳐 Http Client jar 사용)
CWECWE-565, CWE-201
CVSS높음: 8.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
제품CakePHP
영향받음5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
인증앱이 호스트 전반에 걸쳐 기본 쿠키 jar와 함께 Cake\Http\Client 사용
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용

공격자가 할 수 있는 일

여러 호스트에 걸쳐 Cake\Http\Client 쿠키를 유지하는 애플리케이션이 필요합니다 (OAuth, 웹훅, 사용자 제공 URL, 두 번째 API).

권한메서드 / 싱크랩 입증 또는 추론
저장된 쿠키를 접미사 혼동 형제 호스트로 유출도메인 api.partner.com인 쿠키 이후 https://evilapi.partner.com/에 대한 CookieCollection::addToRequest랩 입증. 요청 Cookie는 sid=SECRET. RFC 6265는 매칭하지 않음
등록 가능 접미사에 대한 동일한 유출쿠키 도메인 bank.com, 요청 호스트 notbank.com랩 입증. 요청 Cookie는 sid=SECRET
부정 통제요청 호스트 other.com랩 입증. Cookie 헤더 없음
내부 호스트에 쿠키 심기https://attacker.test/에서 Set-Cookie: sid=x; Domain=victim.internal의 addFromResponse랩 입증. 저장된 도메인은 victim.internal; 해당 호스트로의 다음 요청은 sid=x 전송
다음 Client 호출에서 세션 고정 / 탈취된 파트너 세션심어진 또는 유출된 sid가 API 세션으로 사용됨추론. 랩은 Cookie 헤더 오라클에서 중단
동일 호스트 전송은 여전히 작동쿠키 도메인 api.partner.com에서 호스트 api.partner.com으로랩 입증. 예상된 동작이며 버그 아님

이 잔여 사항에 대해 종결됨: other.com은 매칭되지 않습니다. 브라우저 쿠키 jar는 이 버그가 아닙니다. 셸 없음. 스켈레톤 앱에 대한 비인증 RCE 아님.

발견 방법

GHSA-2qh5, GHSA-fxf7, GHSA-vjqc, 그리고 5.4.2 filename= 노트 이후 cakephp/cakephp 5.4.2를 고정했습니다. Http Client 쿠키 매칭은 정규식 접미사입니다:

$pattern = '/' . preg_quote($domain, '/') . '$/';
if (!preg_match($pattern, $host)) {
    continue;
}

addFromResponse는 요청 호스트를 기본값으로만 전달합니다. Set-Cookie의 Domain= 속성이 이를 덮어쓰고 저장됩니다.

이미 기록된 잘못된 방향: 이를 브라우저 쿠키 버그로 취급; other.com도 매칭된다고 주장; 호스트 전반에 걸쳐 jar를 사용하는 앱 없이 Cookie 헤더 오라클을 ATO로 과장. 연극: 리버스 셸.

랩

python3 cakephp-cookie-suffix-Abraxas-Labs.py

또는

cd lab
./run.sh

PHP 8.3에서 Git clone 태그 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63). 127.0.0.1:19420에서 루프백 오라클 HTTP. 추가 HTTP 오리진은 필요하지 않음; 오라클은 고정 버전의 CookieCollection을 실행합니다.

  1. sid=SECRET 도메인 api.partner.com 추가. addToRequest https://evilapi.partner.com/ -> Cookie: sid=SECRET.
  2. 통제 https://other.com/ -> Cookie 헤더 없음.
  3. 동일 호스트 https://api.partner.com/는 여전히 sid=SECRET 전송.
  4. 추가 접미사 bank.com -> https://notbank.com/가 sid=SECRET 전송.
  5. https://attacker.test/에서 Set-Cookie: sid=x; Domain=victim.internal; Path=/와 함께 addFromResponse. 다음 https://victim.internal/이 sid=x 전송.
SUCCESS cakephp-cookie-suffix suffix-leak=yes control-other=yes plant-domain=yes how=cakephp-5.4.2 CAKEPHP-COOKIE-SUFFIX-WITNESS

수정

RFC 6265 도메인 매칭 (host === domain || str_ends_with($host, '.' . $domain)). Domain이 생략된 경우 호스트 전용 쿠키. 요청 호스트와 도메인 매칭되지 않는 Domain 거부. 공용 접미사 거부.

참고 자료

  • github.com/cakephp/cakephp 태그 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Http/Cookie/CookieCollection.php · src/Http/Cookie/Cookie.php
  • RFC 6265 domain-match
  • CWE-565 · CWE-201

라이선스

GNU Affero GPL v3.0. LICENSE 참조. 루프백 랩 전용. 보증 없음.

도구 다운로드