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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
proftpd-sftp-copy-file-write — ProFTPD 1.3.9d - High - Remote - 권한 잔존 / 파일 쓰기 - SFTP copy-file이 대상 WRITE를 건너뜀 | Kitploit
도구/GitHubGitHub/abraxas/proftpd-sftp-copy-file-write
Authentication & AuthorizationVulnerability AnalysisExploitationWeb Application ExploitationSecurity VirtualizationPenetration TestingPapers & ResearchLabs & Practice

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubabraxas/proftpd-sftp-copy-file-write

proftpd-sftp-copy-file-write

ProFTPD 1.3.9d - High - Remote - 권한 잔존 / 파일 쓰기 - SFTP copy-file이 대상 WRITE를 건너뜀

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

Abraxas Labs - proftpd-sftp-copy-file-write

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  proftpd-sftp-copy-file-write

proftpd-sftp-copy-file-write

분류: 권한 잔여 / 파일 쓰기 도달 범위: 원격

ProFTPD 1.3.9d (f59f248) - proftpd.org

contrib mod_sftp는 SFTPEngine이 켜져 있으면(SFTP_FXP_EXT_DEFAULT) copy-file을 광고한다. fxp_handle_ext_copy_file은 pr_fsio_stat(dst)가 성공한 경우에만 dest WRITE와 AllowOverwrite를 실행한다. 아직 존재하지 않는 dest는 이 검사를 건너뛴다. 그런 다음 pr_fs_copy_file2가 세션 UID로 파일을 생성하며, <Limit WRITE> DenyAll 하에서도 마찬가지다.

FTP STOR와 SFTP OPEN-write는 여전히 xfer_pre_stor를 거치며, 이는 생성 전에 항상 WRITE를 dir_check한다. 공개된 Issue 2095는 그 반대 사례다: SITE COPY가 소스 READ를 건너뛰었다. 이번 잔여 문제는 새 이름에 대한 dest WRITE다.

ID아직 CVE 없음
분류권한 잔여 / 파일 쓰기
도달 범위원격 (인증된 SFTP)
CWECWE-863
CVSS높음: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
제품ProFTPD
영향받음1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_sftp
인증인증된 SFTP (SFTPEngine on)
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용

태그 v1.3.9d를 고정하고 fxp_handle_ext_copy_file을 읽었다. 이 함수는 가짜 SITE COPY의 PRE_CMD를 디스패치한다. mod_copy는 copy_copy를 CMD로 등록하며 PRE_CMD가 아니므로, FTP의 dest WRITE 검사는 이 경로에서 실행되지 않는다. 소스 READ는 항상 dir_check된다. dest WRITE는 dest가 이미 존재하지 않는 한 그렇지 않다. 랩은 127.0.0.1:18710의 루프백 SFTP다.

공격자가 할 수 있는 일

방법싱크권한
SFTP EXTENDED copy-file로 읽기 가능한 src를 아직 존재하지 않는 dest 이름으로 복사, <Limit WRITE> DenyAll이 있는 <Directory> 하에서pr_fs_copy_file2무결성 (랩 입증): 해당 파일을 세션 UID로 생성. 정찰 (랩 입증): dest READ가 허용되면 dest의 SFTP READ가 소스 바이트를 반환.
동일한 dest가 이미 존재dir_check WRITE + AllowOverwrite차단됨 (랩 입증): copy-file 덮어쓰기는 권한 거부를 반환.
동일한 dest에 대한 SFTP OPEN / STOR / SCP 업로드xfer_pre_stor차단됨 (랩 입증): OPEN write/create는 SSH_FX_PERMISSION_DENIED (상태 3).
인증되지 않은 copy-fileSFTP 인증차단됨. 셸 없음. Unix DAC는 여전히 적용됨.

랩 입증 vs 추론: dest 생성, witness의 dest READ, OPEN-write 거부, 기존 dest 덮어쓰기 거부는 랩 입증이다. 미인증과 Unix DAC는 인증/chroot 모델에서 추론한 것이다.

요구 사항: contrib mod_sftp 로드됨, SFTPEngine on. 일반적인 배포판 SFTP vhost. SFTPExtensions -copyFile은 확장을 끈다.

랩

cd lab
./run.sh

루프백 127.0.0.1:18710은 컨테이너 2222에 매핑된다. Compose 프로젝트 proftpd-sftp-copy-file-write. 이미지 태그 proftpd-sftp-copy-file-write:1.3.9d. Witness PROFTPD-SFTP-COPY-FILE-WRITE-WITNESS. 마지막 줄:

SUCCESS PROFTPD-SFTP-COPY-FILE-WRITE dest-exists=yes open-write=denied copy-file=ok overwrite-denied=yes PROFTPD-SFTP-COPY-FILE-WRITE-WITNESS

수정

pr_fs_copy_file2 전에 dest가 아직 존재하지 않더라도 dest WRITE를 dir_check하라. 또는 확장을 비활성화하라: SFTPExtensions -copyFile.

참고 자료

  • github.com/proftpd/proftpd 태그 v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_sftp/fxp.c의 fxp_handle_ext_copy_file
  • SFTP_FXP_EXT_DEFAULT는 copy-file을 포함한다
  • 반대 사례 (FTP SITE COPY의 소스 READ 건너뛰기, 이번 dest WRITE 잔여 문제가 아님): Issue 2095
  • CWE-863
도구 다운로드