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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cakephp-attachment-crlf — CakePHP 5.4.2 - 높음 - 원격 - CRLF - 첨부 파일 Content-Type 및 Content-ID 잔여물 | Kitploit
도구/GitHubGitHub/abraxas/cakephp-attachment-crlf
Vulnerability AnalysisExploitationWeb Application ExploitationSecurity VirtualizationWeb SecurityPenetration Testing
GitHubabraxas/cakephp-attachment-crlf

cakephp-attachment-crlf

CakePHP 5.4.2 - 높음 - 원격 - CRLF - 첨부 파일 Content-Type 및 Content-ID 잔여물

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - cakephp-attachment-crlf

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

분석 문서: https://abraxaslabs.tech/research/cakephp-attachment-crlf

cakephp-attachment-crlf

분류: MIME 파트 헤더 주입 도달 범위: 원격

CakePHP 5.4.2 (887b641) - Cake Software Foundation

5.4.2는 이미 멀티파트 name= / filename=에서 ", \r, \n을 제거합니다(FormDataPart::_headerParameterToString). 이것이 대조군입니다. Content-Type과 Content-ID는 그대로 원시 문자열 연결로 남아 있었습니다. Message::setAttachments는 UploadedFile 클라이언트 미디어 타입을 추가 필터 없이 해당 타입 필드에 복사합니다.

사용자 업로드를 첨부하거나 사용자의 contentId를 전달하는 앱은 그 바이트들을 MIME 파트에 그대로 넣습니다. 그러면 getBodyString()은 해당 파트 아래에 두 번째 헤더 줄을 표시합니다.

ID아직 CVE 없음
분류MIME 파트 헤더 주입
도달 범위원격 (사용자 업로드 또는 사용자 contentId를 첨부하는 앱)
CWECWE-93
CVSS중간: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
제품CakePHP
영향받는 버전5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
인증사용자 업로드(UploadedFile 클라이언트 MIME) 또는 사용자 contentId를 첨부하는 애플리케이션
라이선스GNU Affero GPL v3.0
실습 환경127.0.0.1 전용

공격자가 할 수 있는 일

앱이 Message::setAttachments / addAttachment에 전달하는 첨부 메타데이터에 영향을 줄 수 있는 사람은 MIME 파트 헤더를 주입할 수 있습니다.

권한메서드 / 싱크종류실습 환경 입증 또는 추론
추가 Content-Type 헤더 줄'mimetype' => "text/plain\\r\\nX-Injected: …"를 사용한 setAttachmentsMIME 파트 헤더 무결성실습 환경 입증. 증거 줄 존재
추가 Content-ID 헤더 줄'contentId' => "cid@…>\\r\\nX-Injected: …" (인라인 파트)MIME 파트 헤더 무결성실습 환경 입증. 증거 줄 존재
업로드 MIME을 통한 동일 주입UploadedFile::getClientMediaType()가 mimetype에 복사됨MIME 파트 헤더 무결성실습 환경 입증. 증거 줄 존재
filename= CRLFCR/LF가 포함된 첨부 파일 이름차단됨실습 환경에서 차단 입증. 5.4.2 제거 조치 유효
이 싱크를 통한 봉투 RCPT / Bcc본문 내 MIME 파트 헤더차단됨이는 SmtpTransport의 쌍 전용 제거 조치로, 별개 사안
SMTP 전송실습 환경은 getBodyString()만 호출차단됨전송 계층 없음, 셸 없음

동일한 문자열 연결에서 추론했으나 입증하지는 않음: 멀티파트 경계를 포함하도록 조작된 type 또는 contentId는 수신 MUA에서 메시지를 추가 파트로 분할할 수 있습니다. 메일은 전송하지 않았습니다.

동일 고정 버전 관련 잔여 항목: window SQLi, collate SQLi, cache unserialize.

발견 방법

멀티파트 Content-Disposition filename= 주입이 수정되었다는 bakery 공지를 확인한 후 cakephp/cakephp 5.4.2를 고정했습니다. _headerParameterToString이 정화 처리기입니다:

$transliterated = Text::transliterate(str_replace(['"', "\r", "\n"], '', $value));

__toString()은 여전히 다음을 수행합니다:

if ($this->type) {
    $out .= 'Content-Type: ' . $this->type . "\r\n";
}
if ($this->contentId) {
    $out .= 'Content-ID: <' . $this->contentId . ">\r\n";
}

Message::setAttachments는 업로드 클라이언트 유형을 제거 없이 복사합니다. 그런 다음 attachFiles / attachInlineFiles가 $part->type($fileInfo['mimetype'])와 $part->contentId($fileInfo['contentId'])를 호출합니다.

이미 기록된 잘못된 방향: 봉투 RCPT를 이 잔여물로 취급하는 것(추가 줄은 본문에 있음); filename=이 여전히 주입된다고 주장하는 것(그렇지 않음); SMTP 전송; 리버스 셸. 쇼에 불과합니다.

실습

python3 cakephp-attachment-crlf-Abraxas-Labs.py

또는

cd lab
./run.sh

오직 http://127.0.0.1:19460만 대상으로 합니다. PHP 8.3, 빌드 시 CakePHP 태그 5.4.2를 클론합니다. lab_server.php는 Message::setAttachments를 노출합니다. 네 가지 경우: filename 제어, mimetype, contentId, UploadedFile 미디어 타입.

SUCCESS cakephp-attachment-crlf how=live pin=5.4.2 sha=887b641de9f7aba06071f98f17edcbc573cbcf63 mimetype=yes contentId=yes upload=yes filename-stripped=yes CAKEPHP-ATTACHMENT-CRLF-WITNESS

수정 사항

type, contentId, transferEncoding을 _headerParameterToString과 동일한 " / \r / \n 제거 처리를 거치도록 합니다. 제거 후에도 줄바꿈이 남아 있으면 해당 값을 거부합니다. 메일러 테스트에서 filename=뿐만 아니라 UploadedFile 클라이언트 MIME과 명시적 mimetype / contentId도 다룹니다.

참고 자료

  • github.com/cakephp/cakephp 태그 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • FormDataPart.php · Message.php
  • 인접 패치: 5.4.2 bakery filename= 제거
  • 동일 핀: cakephp-window-sqli · cakephp-collate-sqli · cakephp-cache-unserialize
  • CWE-93

라이선스

GNU Affero GPL v3.0. LICENSE를 참조하십시오. 루프백 실험실 전용입니다. 보증하지 않습니다.

도구 다운로드