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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
proftpd-rewrite-utf8trans — ProFTPD 1.3.9d - 높음 - 원격 - 크래시 - RewriteMap int:utf8trans BSS 오버플로 | Kitploit
도구/GitHubGitHub/abraxas/proftpd-rewrite-utf8trans
Vulnerability AnalysisExploitationFuzzingNetwork SecurityPenetration TestingBinary AnalysisLabs & Practice
GitHubabraxas/proftpd-rewrite-utf8trans

proftpd-rewrite-utf8trans

ProFTPD 1.3.9d - 높음 - 원격 - 크래시 - RewriteMap int:utf8trans BSS 오버플로

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - proftpd-rewrite-utf8trans

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  proftpd-rewrite-utf8trans

proftpd-rewrite-utf8trans

분류: 크래시 도달 범위: 원격

ProFTPD 1.3.9d (f59f248) - ProFTPD (proftpd.org)

contrib mod_rewrite는 RewriteMap int:utf8trans를 제공합니다. 이 내장 기능은 클라이언트 FTP 인자(최대 CommandBufferSize, 512 KiB)를 목적지 크기 제한 없이 1024 슬롯짜리 BSS 버퍼 두 개에 복사합니다. 긴 ASCII STOR 이름은 크기 8의 ASan global-buffer-overflow WRITE를 발생시킵니다. 세션 자식 프로세스가 중단됩니다. 데몬은 계속 실행됩니다. 분류는 크래시입니다. RCE는 아닙니다.

ID아직 CVE 없음
분류크래시
도달 범위원격 (int:utf8trans에 전달되는 FTP 인자)
CWECWE-120
CVSSRewriteRule이 사전 인증(pre-auth)인 경우 높음: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H. 실습 환경은 로그인 후 STOR를 사용했으므로 해당 실행에서는 PR:L이 정직합니다(AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H).
제품ProFTPD
영향받는 버전1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_rewrite
인증실습 환경은 인증된 STOR입니다. USER 등에 대한 사전 인증 RewriteRule은 PR:N이 됩니다.
라이선스GNU Affero GPL v3.0
실습 환경127.0.0.1 전용

공격자가 할 수 있는 일

RewriteEngine은 구성하기 전까지 꺼져 있습니다. 문서화된 패턴은 RewriteRule (.*) ${map:$1}입니다. RewriteRule이 클라이언트 인자를 int:utf8trans를 통해 전달하면, 1024바이트보다 긴 키가 세션 자식 프로세스의 정적 버퍼 두 개를 오버플로합니다.

방법싱크권한
인자가 utf8trans 맵 키이고 길이가 1024를 초과하는 FTP 명령rewrite_utf8_to_ucs4 이후 utf8_val[i] = ucs4_longs[i]가용성(실습 환경에서 입증): 세션 자식 프로세스 크래시. ASan: global-buffer-overflow WRITE of size 8, 이후 ABORTING. Prefork: 새 로그인은 여전히 작동했고 데몬은 계속 실행되었습니다. 200 ASCII 바이트의 짧은 STOR는 견뎠습니다. 인접한 rewrite BSS 무결성은 추론된 것이며 컴파일러 레이아웃에 의존합니다.
RIP / 코드 실행주장 없음종료. 페이로드 없음. 분류는 크래시. RCE 아님.
.ftpaccess에 RewriteMap 심기CONF_DYNDIR종료. RewriteMap은 .ftpaccess에서 허용되지 않습니다.
prg: 셸해당 맵 타입 없음종료. FIFO는 라인 I/O입니다.

실습 환경에서 입증된 것 vs 추론된 것: 크기 8의 ASan WRITE, 세션 자식 프로세스 중단, 짧은 인자 제어의 생존, 트리거 후 로그인은 실습 환경에서 입증되었습니다. RIP/RCE는 주장되지 않습니다.

이슈 2173은 이 핀에서 int:unescape의 1바이트 OOB를 패치했습니다. 이 잔여 버그는 int:utf8trans입니다. 다른 내장 기능입니다. 다른 버그입니다.

발견 방법

proftpd/proftpd 태그 v1.3.9d를 고정했습니다. 2026년 CVE 무리와 해당 tarball에 여전히 남아 있는 공개 GitHub 이슈들(2170, 2173, 2175, 2180, 2095, 2256, 2286, 2319, 2330, 2301)은 제외 목록이었습니다. 샘플 basic.conf를 사용한 기본 코어 FTP는 미공개 Crit/High를 제공하지 않았습니다. contrib rewrite가 제공했습니다.

rewrite_map_int_utf8trans (contrib/mod_rewrite.c)에는 다음이 있습니다:

static unsigned char utf8_val[PR_TUNABLE_BUFFER_SIZE];   /* 1024 */
static unsigned long ucs4_longs[PR_TUNABLE_BUFFER_SIZE]; /* 1024 */
ucs4strlen = rewrite_utf8_to_ucs4(ucs4_longs, strlen(key), (unsigned char *) key);

rewrite_utf8_to_ucs4는 ASCII 바이트당 하나의 unsigned long을 제한 없이 씁니다. PR_TUNABLE_CMD_BUFFER_SIZE는 512 KiB입니다. 이슈 2173은 이미 unescape를 수정했습니다. 이 맵은 그 수정에 포함되지 않았습니다.

잘못된 방향: 2173을 이 버그로 취급한 것; ASan이 WRITE of size 8이라고 했기 때문에 RIP를 주장한 것; .ftpaccess가 RewriteMap을 심을 수 있기를 바란 것. 첫 번째는 다른 함수입니다. 두 번째는 여전히 크래시입니다. 세 번째는 CONF_DYNDIR입니다.

ASan과 stock libcrypt는 rewrite 싱크 이전에 PASS에서 SIGSEGV를 발생시킵니다. 실습 환경은 로그인이 작동하도록 작은 crypt(3) 스텁을 미리 로드합니다. 그 스텁은 익스플로잇이 아닙니다.

실습 환경

python3 proftpd-rewrite-utf8trans-Abraxas-Labs.py

또는:

cd lab
./run.sh

루프백 127.0.0.1:18740 및 패시브 18741-18750. Compose 프로젝트 proftpd-rewrite-utf8trans. 증인 PROFTPD-REWRITE-UTF8TRANS-WITNESS. 이미지는 1.3.9d mod_rewrite의 ASan 빌드입니다. 200 ASCII 바이트의 제어 STOR는 성공합니다. 2048 ASCII 바이트의 STOR는 크기 8의 ASan global-buffer-overflow WRITE이며 세션 자식 프로세스가 중단됩니다. 트리거 후 새 로그인은 여전히 작동합니다.

SUCCESS PROFTPD-REWRITE-UTF8TRANS asan=global-buffer-overflow write=yes child-dead=yes PROFTPD-REWRITE-UTF8TRANS-WITNESS

수정 방법

rewrite_utf8_to_ucs4의 목적지 길이를 PR_TUNABLE_BUFFER_SIZE-1로 제한하십시오. ucs4_longs / utf8_val을 넘어 쓰는 것을 중단하십시오. 맞지 않는 맵 키를 거부하거나 잘라내십시오.

참고 자료

  • github.com/proftpd/proftpd 태그 v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_rewrite.c rewrite_utf8_to_ucs4 / rewrite_map_int_utf8trans
  • 인접 패치됨(이 맵 아님): 이슈 2173 int:unescape
  • CWE-120

라이선스

GNU Affero GPL v3.0. LICENSE 참조. 루프백 실습 환경 전용. 보증 없음.

도구 다운로드